将图像分割成多个部分

将图像分割成多个部分

我有一个如下图。它是2579*2388像素。假设它的左下角位于 0,0。我想从该图像创建多个图像,如下所示并将它们保存在工作文件夹中。每个图像的大小为 100*100 像素。每个图像将通过其左下角坐标保存。

  1. 第一张图像的左下角位于 0,0。右上角将位于 100,100,图像将保存为 0-0.jpg
  2. 第二张图像的左下角位于 10,0。右上角位于 110,100,图像将保存为 10-0.jpg
  3. 底行完成后,Y 坐标将移动 10。在第二行的情况下,第一张图像将位于 0,10,该图像将保存为 0-10.jpg

最快的方法是什么?我更喜欢命令行方法。但首先,我可以使用任何类型的工具。

据我所知,在当前图像的情况下,它会将其分割成大约 257*238 的图像。但我有足够的磁盘空间,我需要每个图像来执行文本检测。

在此输入图像描述

答案1

以下是 shell 代码(bashkshzsh),可以执行您想要的操作:

image=clock.jpg

size=$( identify -ping -format "%wx%h" "${image}" )
x_upb=${size%x*}
y_upb=${size#*x}

x_inc=10
y_inc=10
x_tile=100
y_tile=100

for ((x=0; x<x_upb; x+=x_inc))
do
    for ((y=0; y<y_upb; y+=y_inc))
    do
        convert "${image}" -crop "${x_tile}x${y_tile}+${x}+${y}" "$x-$y.jpg"
    done
done

该程序convert来自ImageMagick 程序套件。由于还可以自动从图片文件中提取图片尺寸,因此我也添加了该步骤。根据 don_crissti 的评论,我也建议identify为此目的使用(它也方便地来自 ImageMagick 程序套件)。当然,您也可以在x_upb和中硬编码图片尺寸y_upb,并根据需要调整图块尺寸和图块移位增量。我希望并认为代码是不言自明的。

注意:它确实需要一些调整;例如,图块可能不会超出上限(或者如果靠近边界,您会得到较小的子图片),因此如果您想要相等,则需要从上限中减去图块大小 -整个图像上大小的子图像。

注意:据我所知,“几何图形”被定义为具有从左上角的 (0,0) 开始的方向。如果您想要其他方向,您需要自己进行数学计算以适应该接口定义。通常的代码模式是根据上限来寻址相应的坐标,例如,$((y_upb - y)),将y是变体部分,即(循环)变量。

相关内容