创建乐高版马赛克图

简介: 创建乐高版马赛克图

简介

今日内容比较“无用”,觉得比较好玩,所以就做一期“异类”可视化啦!主要介绍下  brickr[1] 包,它将乐高(LEGO) 带入 R 和 tidyverse 生态系统中,该包分为2个部分:

  • Mosaics(马赛克)[2]:将图像转换为乐高积木的马赛克图像。
  • 3D 模型[3]:使用 rgl 包,通过数据表构建 3D 乐高模型。

今天这一期主要介绍第一个部分:

马赛克

首先读取 PNG 或 JPEG 图像,然后使用 image_to_mosaicbuild_mosaic 函数 构建成乐高版本的马赛克图。下面给出一个官方的例子:

# install.packages("brickr")
library(brickr)
# install.packages("png")
library(png)
# 图像获取
img <- tempfile()
download.file("https://r-charts.com/images/favicon.png",
              img, mode = "wb")
# 创建LEGO版本的mosaic图
readPNG(img) %>%
  image_to_mosaic() %>%
  build_mosaic()

如果未安装该包,可使用install.packages("brickr")进行安装。这里readPNG()来自 png 包,记得也要提前安装。

这里是先建立一个临时文件 img,然后将网上的一张图下载下来,并存储到 img 中。之后读取图像和转化为马赛克数据,最后构建成马赛克图。

当然,如果你可以加载本地的图像,例如,小编将自己公众号的头像进行上传演示:

readPNG("avatar.png") %>%
  image_to_mosaic() %>%
  build_mosaic()

得到的图形如下:

image_to_mosaic()内部包含了一些重要的参数,详细介绍可见 ?image_to_mosaic()。这里主要修改 img_size 参数来调整图片尺寸,当是一个值时,表示创建一个正方形图像,如果是两个值c(56,48)则表示创建长为 56,宽为48的长方形图像。数值越大,像素越高,乐高版本的马赛克越密集,例如当img_size = 120时,得到的结果:

感觉拿来当头像也很好呀!如果想通过该功能制作头像,记得背景最好纯色,这样效果更佳。如果照片不是 png 格式,可以通过这个网站[4]转化为 png 格式,再导入。

介绍构建过程

你可以使用  build_instructions 介绍你这个图构建的过程,默认是 6 步骤,例如官网例子:

library(brickr)
library(png)
# Get the image
img <- tempfile()
download.file("https://r-charts.com/images/favicon.png",
              img, mode = "wb")
# Create the LEGO instructions
readPNG(img) %>%
  image_to_mosaic() %>%
  build_instructions()

我将其应用到推文:R可视乎|用R给心仪的对象表白吧 图形,这时得到的表白爱心构建步骤如下:

是不是还挺 Romantic 的👻

使用乐高的材料

你可以通过 build_pieces 函数,告诉大家这个图使用了哪些颜色,形状的乐高材料。例如,官网例子:

library(brickr)
library(png)
# Get the image
img <- tempfile()
download.file("https://r-charts.com/images/favicon.png",
              img, mode = "wb")
# List of LEGO pieces
readPNG(img) %>%
  image_to_mosaic() %>%
  build_pieces()

小编有话说

  • 今天主要介绍 brickr 包一部分功能,主要是讲了三个函数的使用以及解释得到图片的结果,具体可见这篇教程[5]
  • 小编觉得这个包确实很有趣,你可以将自己的头像上传转化成马赛克图作为头像,这不挺酷的吗?哈哈。
  • 下一期会介绍这个包的另一个功能,搭三维的马赛克图!

参考资料

[1]

brickr: http://brickr.org/index.html

[2]

Mosaics(马赛克): http://brickr.org/index.html#mosaics

[3]

3D模型:http://brickr.org/index.html#3d-models

[4]

网站: https://jpg2png.com/

[5]

教程: https://r-charts.com/miscellaneous/brickr/

目录
相关文章
|
7月前
|
前端开发
什么是精灵图?
什么是精灵图?
138 0
|
2月前
|
前端开发
什么是精灵图
什么是精灵图
137 1
|
7月前
如何绘制PAD图和N-S图(详细步骤)
如何绘制PAD图和N-S图(详细步骤)
639 0
|
4月前
|
存储 C# 计算机视觉
将彩色图转化为灰度图及其原理介绍
将彩色图转化为灰度图及其原理介绍
101 0
|
6月前
|
机器学习/深度学习 图形学
神笔马良画出三维世界,基于线稿的3D生成编辑方法SketchDream来了
【6月更文挑战第10天】研究人员推出SketchDream系统,将手绘草图与文本描述转化为3D模型,简化了3D内容创作过程。该系统基于深度学习的多模态生成模型,结合草图和文本信息,实现高质量3D生成与编辑。尽管有局限性,如依赖预训练模型和对复杂编辑任务的处理能力,SketchDream在3D生成和编辑方面表现出色,降低了3D建模的门槛。[论文链接](https://arxiv.org/pdf/2405.06461)
91 1
|
7月前
|
存储 数据可视化 关系型数据库
绘制圆环图/雷达图/星形图/极坐标图/径向图POLAR CHART可视化分析汽车性能数据
绘制圆环图/雷达图/星形图/极坐标图/径向图POLAR CHART可视化分析汽车性能数据
|
7月前
|
Python
根据我给的图片指定我词云图的形状
根据我给的图片指定我词云图的形状
63 0
|
7月前
[Qt5] 鼠标中心为基准缩放图像(halcon实现)
[Qt5] 鼠标中心为基准缩放图像(halcon实现)
250 0
|
定位技术
ArcMap | 出图小技巧——比例尺、鹰眼图、表格、文本、图片
ArcMap | 出图小技巧——比例尺、鹰眼图、表格、文本、图片
418 0
|
机器学习/深度学习 算法
【目标识别】检测具有相同背景的不同图像并找到图像中的红色圆圈目标(Matlab代码实现)
【目标识别】检测具有相同背景的不同图像并找到图像中的红色圆圈目标(Matlab代码实现)