R: Convert/Read 3D 矩阵转换为 'magick' 对象,反之亦然
R: Convert/Read 3D Matrix into a 'magick' object and vice versa
我想使用 magick
软件包,因为它具有出色的图像处理功能。浏览 here 我似乎无法找到如何将 3D 矩阵(宽度 x 高度 x 通道)转换为我可以进一步操作的 magick
对象,反之亦然。
- 没有
as.magick
功能
as.matrix
功能不起作用
但我想要这样的东西:
height <- 100
width <- 80
X <- array(runif(height * width * 3, min = 0, max = 255), c(height, width, 3))
magick::as.magick(X) %>% magick::image_scale("500x400")
(显然我可以将矩阵作为图像写入磁盘,然后用 magick::image_read
读取它,这太过分了)
我错过了什么?
您也可以使用 image_read()
来读取矩阵。但是请注意,在双精度的情况下,约定是在 0 和 1 之间缩放值。因此,您需要将 X
除以 255。试试这个:
img <- magick::image_read(X / 255) %>% magick::image_scale("500x400")
如果您想将魔法对象转换回数组:
image_data(img, 'rgba')
或者只是 img[[1]]
也可以。
我想使用 magick
软件包,因为它具有出色的图像处理功能。浏览 here 我似乎无法找到如何将 3D 矩阵(宽度 x 高度 x 通道)转换为我可以进一步操作的 magick
对象,反之亦然。
- 没有
as.magick
功能 as.matrix
功能不起作用
但我想要这样的东西:
height <- 100
width <- 80
X <- array(runif(height * width * 3, min = 0, max = 255), c(height, width, 3))
magick::as.magick(X) %>% magick::image_scale("500x400")
(显然我可以将矩阵作为图像写入磁盘,然后用 magick::image_read
读取它,这太过分了)
我错过了什么?
您也可以使用 image_read()
来读取矩阵。但是请注意,在双精度的情况下,约定是在 0 和 1 之间缩放值。因此,您需要将 X
除以 255。试试这个:
img <- magick::image_read(X / 255) %>% magick::image_scale("500x400")
如果您想将魔法对象转换回数组:
image_data(img, 'rgba')
或者只是 img[[1]]
也可以。