如何在单个单词处拆分文本屏幕截图?
How to split screenshot of text at individual words?
我有一行文字的截图,像这样:
文字是白底黑字。 ImageMagick 是否有识别单词之间空格位置的命令?
它需要一个阈值,这样它就不会被各个字母之间小得多的空白所混淆。
目的是将图像拆分成单个单词的图片。示例图像将被拆分为 3 个图像:stack、over 和 flow。
您可以在 ImageMagick 中做到这一点,方法是使用形态学将每个单词中的字母混合在一起,这样每个单词都有一个黑色区域。然后使用连接的组件来获取它们的边界框。然后从边界框裁剪图像。
在 Unix 语法的 ImageMagick 6 中:
输入:
OLDIFS=$IFS
IFS=$'\n'
bboxArr=(`convert Whosebug.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 }'`)
IFS=$OLDIFS
num=${#bboxArr[*]}
echo $num
for ((i=0; i<num; i++)); do
bbox=${bboxArr[$i]}
echo "$i $bbox"
convert Whosebug.png +repage -crop $bbox +repage Whosebug_word_$i.png
done
结果:
我有一行文字的截图,像这样:
文字是白底黑字。 ImageMagick 是否有识别单词之间空格位置的命令?
它需要一个阈值,这样它就不会被各个字母之间小得多的空白所混淆。
目的是将图像拆分成单个单词的图片。示例图像将被拆分为 3 个图像:stack、over 和 flow。
您可以在 ImageMagick 中做到这一点,方法是使用形态学将每个单词中的字母混合在一起,这样每个单词都有一个黑色区域。然后使用连接的组件来获取它们的边界框。然后从边界框裁剪图像。
在 Unix 语法的 ImageMagick 6 中:
输入:
OLDIFS=$IFS
IFS=$'\n'
bboxArr=(`convert Whosebug.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 }'`)
IFS=$OLDIFS
num=${#bboxArr[*]}
echo $num
for ((i=0; i<num; i++)); do
bbox=${bboxArr[$i]}
echo "$i $bbox"
convert Whosebug.png +repage -crop $bbox +repage Whosebug_word_$i.png
done
结果: