使用 magick 包填充图像
Filling an image using magick package
此图片应使用较小的图片填充:
library(sp)
library(raster)
library(imager)
im <- load.image("white_rectangle.jpg")
px <- im > 0.4 #Select pixels of the circle (i.e., those with high luminance)
coord <- where(px)
boundaries <- imager::boundary(px)
boundaries.xy <- where(boundaries)
x_coord <- boundaries.xy$x
y_coord <- boundaries.xy$y
xym <- cbind(x_coord, y_coord)
p = Polygon(xym)
ps = Polygons(list(p),1)
sps1 = SpatialPolygons(list(ps))
plot(sps1)
我正在尝试使用 magick 包来填充以前的图像。
关于解决它的想法之一是尝试用像 3x3 矩阵这样的图像立方体填充它。
bigdata <-
image_read('https://jeroen.github.io/images/bigdata.jpg')
frink <- image_read("https://jeroen.github.io/images/frink.png")
logo <- image_read("https://jeroen.github.io/images/Rlogo.png")
img <- c(bigdata, logo, frink)
img <- image_scale(img, "300x300")
image_info(img)
new_i <- image_append(image_scale(img, "x200"))
我当前的代码 returns 一个 3 的向量,我不明白如何创建 3 x 3 图像的矩阵:
image_append(new_i,new_i,new_i stack = TRUE)
感谢您的指导。
我不确定您的输入图像有多大,也不知道您希望它们如何填充。但是如果你想让它们并排附加,那么在 Imagemagick 命令行中,我会这样做:
输入(重复3次):
你要填充的图片去掉边框后是630x380。我得到
convert img.jpg -fuzz 15% -format "%@" info:
630x380+10+10
所以在你的图像中添加和插入:
convert img.jpg \( monet2.jpg monet2.jpg monet2.jpg +append -resize 630x380^ -gravity center -extent 630x380 \) -gravity center -compose over -composite result.jpg
这是你想要做的吗?
如果您想要 3x3 的图像网格,请调整(调整大小 and/or 裁剪)3 张图像,使它们在每个维度上都是背景图像的 1/3 水平附加 3 张。再复制 2 次并垂直附加那组 3。然后插入到你的背景图片中。
convert img.jpg \( \( monet2.jpg monet2.jpg monet2.jpg -resize 210x127^ -gravity center -extent 210x127 +append \) -duplicate 2 -append \) -gravity center -compose over -composite result1.jpg
添加:
另一种方法是平铺图像。
convert img.jpg -resize 210x127^ -gravity center -extent 210x127 -write mpr:img +delete -size 630x380 tile:mpr:img result2.png
此图片应使用较小的图片填充:
library(sp)
library(raster)
library(imager)
im <- load.image("white_rectangle.jpg")
px <- im > 0.4 #Select pixels of the circle (i.e., those with high luminance)
coord <- where(px)
boundaries <- imager::boundary(px)
boundaries.xy <- where(boundaries)
x_coord <- boundaries.xy$x
y_coord <- boundaries.xy$y
xym <- cbind(x_coord, y_coord)
p = Polygon(xym)
ps = Polygons(list(p),1)
sps1 = SpatialPolygons(list(ps))
plot(sps1)
我正在尝试使用 magick 包来填充以前的图像。
关于解决它的想法之一是尝试用像 3x3 矩阵这样的图像立方体填充它。
bigdata <-
image_read('https://jeroen.github.io/images/bigdata.jpg')
frink <- image_read("https://jeroen.github.io/images/frink.png")
logo <- image_read("https://jeroen.github.io/images/Rlogo.png")
img <- c(bigdata, logo, frink)
img <- image_scale(img, "300x300")
image_info(img)
new_i <- image_append(image_scale(img, "x200"))
我当前的代码 returns 一个 3 的向量,我不明白如何创建 3 x 3 图像的矩阵:
image_append(new_i,new_i,new_i stack = TRUE)
感谢您的指导。
我不确定您的输入图像有多大,也不知道您希望它们如何填充。但是如果你想让它们并排附加,那么在 Imagemagick 命令行中,我会这样做:
输入(重复3次):
你要填充的图片去掉边框后是630x380。我得到
convert img.jpg -fuzz 15% -format "%@" info:
630x380+10+10
所以在你的图像中添加和插入:
convert img.jpg \( monet2.jpg monet2.jpg monet2.jpg +append -resize 630x380^ -gravity center -extent 630x380 \) -gravity center -compose over -composite result.jpg
这是你想要做的吗?
如果您想要 3x3 的图像网格,请调整(调整大小 and/or 裁剪)3 张图像,使它们在每个维度上都是背景图像的 1/3 水平附加 3 张。再复制 2 次并垂直附加那组 3。然后插入到你的背景图片中。
convert img.jpg \( \( monet2.jpg monet2.jpg monet2.jpg -resize 210x127^ -gravity center -extent 210x127 +append \) -duplicate 2 -append \) -gravity center -compose over -composite result1.jpg
添加:
另一种方法是平铺图像。
convert img.jpg -resize 210x127^ -gravity center -extent 210x127 -write mpr:img +delete -size 630x380 tile:mpr:img result2.png