R:将3D矩阵转换/读取为"魔法"对象,反之亦然

Gio*_*oni 3 r rmagick imagemagick magick-r-package

我希望使用该magick软件包获得出色的图像处理功能.通过这里看,我似乎无法找到如何将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")
Run Code Online (Sandbox Code Playgroud)

(显然我可以将矩阵写成磁盘作为图像,然后用它读取magick::image_read,这将是一种过度杀伤)

我错过了什么?

Jer*_*oen 6

您也可以使用image_read()读取矩阵.但请注意,惯例是在双精度的情况下缩放0到1之间的值.所以你需要将你X除以255.试试这个:

img <- magick::image_read(X / 255) %>% magick::image_scale("500x400")
Run Code Online (Sandbox Code Playgroud)

如果要将magick对象转换回数组:

image_data(img, 'rgba')
Run Code Online (Sandbox Code Playgroud)

或者只是img[[1]]工作.