imagemagick - 如何在单个单词处拆分文本屏幕截图?
问题描述
我有单行文本的屏幕截图,如下所示:
文本是白色背景上的黑色。ImageMagick 是否有命令来识别单词之间空白的位置?
它需要一个阈值,这样它就不会被单个字母之间的小得多的空白所迷惑。
目的是将图像分割成单个单词的图片。示例图像将被拆分为 3 个图像:stack、over 和 flow。
解决方案
您可以在 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
结果:
推荐阅读
- mysql - 选择连接中的*每条*记录包含字符串的位置
- javascript - 使用引导日期时间选择器动态禁用特定日期
- regex - 如何使用正则表达式匹配 unicode 字符和非数字?
- c++ - 隐藏的 gcov_init 被 DSO 引用
- django - view.html 页面中没有显示任何内容
- css - 如何在图像中设置带有悬停效果的框阴影效果?
- c# - 为什么FromBody填充默认值,但DeserializeObject在传递空值时抛出错误(对于不可为空的数据类型)?
- javascript - HTML5 在图像或视频点击上播放暂停视频
- ios - 如何在视图控制器开始时快速加载 json 数据
- twilio - Twilio 跟踪帐户没有语音到文本功能