我有一个单行文字的截图,如下所示:
白色背景上的文字是黑色的。ImageMagick是否有一个命令来识别单词之间空格的位置?
它需要一个阈值,这样它就不会被单个字母之间的小得多的空格所迷惑。
其目的是将图像分割成单个单词的图片。示例图像将被分成3个图像:堆栈、over和flow。
发布于 2021-07-26 15:28:34
您可以在ImageMagick中使用形态学将每个单词中的字母混合在一起,以便每个单词都有一个黑色区域。然后使用连接的组件来获取它们的包围盒。然后从包围框中裁剪图像。
在Unix语法的ImageMagick 6中:
输入:
OLDIFS=$IFS
IFS=$'\n'
bboxArr=(`convert stackoverflow.png +repage \
-morphology erode rectangle:9x100 +repage \
-threshold 0 -type bilevel \
-define connected-components:exclude-header=true \
-define connected-components:verbose=true \
-define connected-components:mean-color=true \
-connected-components 8 null: | grep "gray(0)" | awk '{print $2}'`)
IFS=$OLDIFS
num=${#bboxArr[*]}
echo $num
for ((i=0; i<num; i++)); do
bbox=${bboxArr[$i]}
echo "$i $bbox"
convert stackoverflow.png +repage -crop $bbox +repage stackoverflow_word_$i.png
done
结果:
https://stackoverflow.com/questions/68524988
复制相似问题