【问题标题】:How to extract small dataset images from a large image using box in R如何使用 R 中的框从大图像中提取小数据集图像
【发布时间】:2019-08-06 07:40:26
【问题描述】:

我想从图像中提取较小图像的数据集,如下所示。我想创建一个 64x64 像素的框,将其转换为 x 和 y 并将每个图像保存为 JPEG。

你能推荐一个 R 中的函数来做吗?我没有找到创建盒子的方法。

【问题讨论】:

  • 你能更详细地解释一下创建一个盒子是什么意思吗?你真的想画一个盒子还是只是裁剪图像的选择?你知道不同盒子的坐标吗?
  • 我想选择一个64x64像素的框进行裁剪,保存小图像,然后翻译这个框并再次保存,翻译/保存等。最后我得到了大量的小图像可用作 Keras 的数据集

标签: r image keras dataset


【解决方案1】:

您可以为此使用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"))
}

【讨论】:

    猜你喜欢
    • 2022-11-10
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    相关资源
    最近更新 更多