自动图像裁剪 JavaScript 工具建议

Automatic Image Cropping JavaScript Tool Suggestions

我想看看是否有人知道我可以上传图像的浏览器(甚至可能 Java)工具,它会努力寻找不同的字符并将它们裁剪成单独的图像。

例如,在此图像中,我想让该工具找到三个独特的符文符号并将它们保存到单独的文件中。这不是真正的 OCR,因为我们没有解释字符是什么,我们只需要认识到它们之间有一点白色 space,所以让我们接受并保存它们。

我的公司有"you're a programmer, so you should be able to do this, right?"的态度,我需要提供解决方案或替代方案。我知道有很多工具可以让用户手动裁剪,但他们正在专门寻找一种自动工具来减少用户数量 activity。

如果(最好是 Java)服务器端工具可用,我肯定也会接受。

如有任何 jQuery、Vue,甚至 Java 等建议,我们将不胜感激。

更新: Imagemagick 根据下面@fmw42 的回复工作,但我们发现了另一个名为 Marvin Image Processing Framework 的工具,它正在做我们需要的事情,它是原生的 Java.

http://marvinproject.sourceforge.net/en/index.html

据我所知,没有任何库可以为您进行裁剪。解决这个问题的一种方法是使用 imagemagick 裁剪图像,但您必须弄清楚裁剪的位置。

https://www.imagemagick.org/script/api.php

祝你好运:)

在 ImageMagick 中,有一个 connected-components 工具可以用一点 unix 脚本来做你想做的事。它仅在字符之间有白色分隔时才有效。我相信OpenCV也有类似的东西。

输入:

让我们从 connected-components 开始,以显示返回的文本数据:

convert rUNOP.png -alpha off -threshold 50% -type bilevel \
-define connected-components:verbose=true \
-connected-components 4 null: | sed 's/^[ ]*//'

Objects (id: bounding-box centroid area mean-color):
0: 236x139+0+0 118.2,71.3 30849 gray(255)
2: 36x50+27+11 39.7,30.5 630 gray(0)
3: 29x50+90+11 103.3,34.3 580 gray(0)
1: 23x50+155+9 163.3,33.3 502 gray(0)
4: 13x24+160+21 165.0,32.9 243 gray(255)

现在将它与一些脚本结合起来,找到那些黑色的条目,即灰色 (0) 颜色并提取边界框并使用它来裁剪输入图像。

OLDIFS=$IFS
IFS=$'\n'
arr=(`convert rUNOP.png -alpha off -threshold 50% -type bilevel \
-define connected-components:verbose=true \
-connected-components 4 null: | sed 's/^[ ]*//'`)
num=${#arr[*]}
IFS=$OLDIFS
for ((i=0; i<num; i++)); do
bbox=`echo ${arr[$i]} | cut -d\  -f2`
color=`echo ${arr[$i]} | cut -d\  -f5`
if [ "$color" = "gray(0)" ]; then
convert rUNOP.png -crop $bbox +repage rUNOP_crop_$i.gif
fi
done