如何使用 Linux 命令行工具扫描图像并自动裁剪为扫描内容?

如何使用 Linux 命令行工具扫描图像并自动裁剪为扫描内容?

我需要扫描许多尺寸非常相似但不完全相同的小物品。

我想做的是:

运行一个 Linux 命令行工具,以文件名作为参数,该工具运行扫描仪,直到整个扫描仪尺寸的约 10%,然后将图像裁剪为非白色的内容(正方形就可以了)。

有人知道这是否可行以及何时可行吗?

答案1

你需要的convert图像魔法。首先imagemagick为您的发行版安装。在 debian 派生系统上运行此命令:

sudo apt-get install imagemagick

现在,如果您只想删除空格,请执行以下操作:

for image in $(find . -name "*png" | sed 's/.png//'); do convert -trim $image.png $image_trimmed.png; done

假设您的图像是 PNG,如果不是,请相应地更改上面的行。

如果你需要更精致的尺寸调整,请查看imagemagick 文档,你可以用它做任何你能想象到的事情。

因此,您的实际工作流程将是:

  1. 扫描您的图像并将其保存在同一个文件夹中。
  2. 在该文件夹中运行我上面给出的命令。

答案2

尝试添加-fuzz

-fuzz *distance*

该距离内的颜色被视为相同。

for image in $(find . -name "*png" | sed 's/.png//');
do convert -fuzz 255 -trim $image.png $image_trimmed.png; done

答案3

作为说这里,通过阅读这篇博文, 我发现这个 bash 脚本它使用图像魔术师:下载它,chmod +x然后我设法使用以下命令旋转和裁剪我的扫描照片:

multicrop -c 50,50 -f 40 -d 50 scanned_photo_in.jpg extracted_photo_out.jpg
  • -c 50,50是从 50,50 处的像素检测背景颜色(默认为 0,0)
  • -f 40是“以百分比表示的分离背景颜色的模糊值”(默认值为 10)
  • -d 50将丢弃宽度或高度小于此尺寸的任何区域(默认不丢弃任何内容)

下面是一个 bash 脚本,用于对当前文件夹中的任何 jpg 文件运行此命令,并将提取的照片放在extracted子文件夹中:

mkdir extracted; for PHOTO in *.jpg; do multicrop -c 50,50 -f 40 -d 50 $PHOTO extracted/$PHOTO; done

答案4

我遇到了同样的问题:我有大量扫描的图片,正在寻找一种方法来裁剪矩形照片并丢弃白色区域。

这里或其他论坛列出的方法对我都不起作用。

离工作地点最近的是@anthony-o 回答通过使用multicrop脚本。

但对于我的情况,我必须减少模糊;否则,它就会从图片中裁剪出部分图像。此外,我还必须添加修剪以避免出现噪点区域。(扫描仪、边框等造成的脏污)。这是我使用的命令:

./multicrop.sh -c 1600,2200 -p 20 Imagen.jpg  extracted/out.jpg

相关内容