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

时间:2017-12-03 11:04:59

标签: r imagemagick rmagick magick-r-package

我希望使用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读取,这将是一种过度杀伤)

我错过了什么?

1 个答案:

答案 0 :(得分:6)

您也可以使用<div style="height:100%;position:relative"> <div style="??? background:tomato;">square (1:1)</div> </div> 来读取矩阵。但请注意,惯例是在双精度的情况下缩放0到1之间的值。因此,您需要将image_read()除以255.试试这个:

X

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

img <- magick::image_read(X / 255) %>% magick::image_scale("500x400")

或者只是image_data(img, 'rgba') 也可以。