0

我有一个必须用包处理的图像magick。所以输出属于 class magick-image。我需要将其转换为一个类rasterBrick以进行进一步处理。

如何将对象转换magick-imagerasterBrick?我需要避免保存和加载中间临时文件。

library(magick)
library(raster)

# load sample image
i <- image_read("https://i.picsum.photos/id/10/2500/1667.jpg?hmac=J04WWC_ebchx3WwzbM-Z4_KC_LeLBWr5LZMaAkWkF68")

# does not work
r <- raster::raster(i)

# workaround that I must avoid
image_write(i,"temp_image.jpg")
t <- brick("temp_image.jpg")
t
4

1 回答 1

1

你可以这样做:

library(terra)
r <- as.raster(i) |> as.matrix() |> rast()
r
#class       : SpatRaster 
#dimensions  : 1667, 2500, 3  (nrow, ncol, nlyr)
#resolution  : 1, 1  (x, y)
#extent      : 0, 2500, 0, 1667  (xmin, xmax, ymin, ymax)
#coord. ref. :  
#source      : memory 
#colors RGB  : 1, 2, 3 
#names       : red, green, blue 
#min values  :   0,     8,    0 
#max values  : 252,   250,  248 

plot(r)

在此处输入图像描述

你可能想坚持terra,但如果你想回到 a RasterBrick,你可以添加

library(raster)
b <- brick(r)
于 2022-02-14T17:42:28.367 回答