【发布时间】:2019-08-06 07:40:26
【问题描述】:
【问题讨论】:
-
你能更详细地解释一下创建一个盒子是什么意思吗?你真的想画一个盒子还是只是裁剪图像的选择?你知道不同盒子的坐标吗?
-
我想选择一个64x64像素的框进行裁剪,保存小图像,然后翻译这个框并再次保存,翻译/保存等。最后我得到了大量的小图像可用作 Keras 的数据集
【问题讨论】:
您可以为此使用magick-package。它具有许多图像处理功能。
基本上我在以下代码中所做的是读取图像,然后根据图像大小创建一个跨越大部分图像的坐标列表(可能缺少部分边缘),但这只是一个例如,您可以将其修改为您需要的坐标。每个点都指您要裁剪的一个框的左上角。
之后在循环中,我指定框 64x64 的大小,并使用之前的坐标在每次迭代中偏移此框,并为每个裁剪后的图像赋予唯一的名称。
install.packages("magick")
library(magick)
# read in image
im <- image_read("example.jpg")
# get image size
im_dim <- dim(image_data(im))
# create offsets for cropping image
coords <- expand.grid(x = seq(0, im_dim[2]-64, by = 64),
y = seq(0, im_dim[3]-64, by = 64))
coords$offset <- paste0("+", coords$x, "+", coords$y)
# crop and save
for(i in coords$offset) {
cropped <- image_crop(im, paste0("64x64", i))
image_write(cropped, paste0("example", i,".jpg"))
}
【讨论】: