Image processing 使用ImageMagick从图像裁剪文本字段
我想使用ImageMagick来裁剪图像中的所有内容,除了黑色背景的文本字段(参见下面的示例)。目标是隔离黑色区域,以便对文本图像进行其他处理。我需要对数百张图像执行这些操作,目标区域在图像之间稍微移动(这些图像是从电影视频中抓取的屏幕) 因此,我需要自适应地识别具有黑色背景的区域,然后从图像中删除所有其他内容 例如,打开此选项: 进入这个:Image processing 使用ImageMagick从图像裁剪文本字段,image-processing,imagemagick,crop,Image Processing,Imagemagick,Crop,我想使用ImageMagick来裁剪图像中的所有内容,除了黑色背景的文本字段(参见下面的示例)。目标是隔离黑色区域,以便对文本图像进行其他处理。我需要对数百张图像执行这些操作,目标区域在图像之间稍微移动(这些图像是从电影视频中抓取的屏幕) 因此,我需要自适应地识别具有黑色背景的区域,然后从图像中删除所有其他内容 例如,打开此选项: 进入这个: 主要关注点是感兴趣区域的左下边缘在所有数百幅图像中对齐。根据更多示例,您可以设置阈值并进行如下“连通成分分析”,并查找最宽的黑色区域: convert
主要关注点是感兴趣区域的左下边缘在所有数百幅图像中对齐。根据更多示例,您可以设置阈值并进行如下“连通成分分析”,并查找最宽的黑色区域:
convert frame.png -threshold 30% \
-define connected-components:verbose=true \
-define connected-components:area-threshold=5000 \
-connected-components 4 -auto-level output.png
Objects (id: bounding-box centroid area mean-color):
1: 720x480+0+0 357.3,232.9 334572 srgb(255,255,255)
27: 542x40+93+416 426.1,441.0 11028 srgb(0,0,0)
如果我用红色画第二个斑点(你可以看到它是黑色的,宽的,不是很高):
您可以使用类似的命令将其裁剪出来:
convert frame.png -crop 542x40+93+416 output.png
Tages:Timecode,time code,video很酷的问题,我明天起床的时候可以再拿几张图片来测试吗?谢谢@Mark,这看起来很有希望。我将测试它,并尝试与您分享更多的图片。有没有一种相当简单的方法可以从详细的输出中保存或传递这些裁剪坐标?太好了!您可能需要将
30%
降低一点。您可以很容易地捕获坐标,但方法取决于您使用的操作系统-Linux/OSX/Windows?你也可以将图像预裁剪到可能的文本区域以提高准确性。我刚刚在几张图片上测试了它,文本区域对齐得更好。实际上,我使用subprocess.call
命令将整个过程包装在Python脚本中,我想我可以找到一种方法将坐标反馈到Python中。这绝对是一个很好的起点,ImageMagick可以做很多事情!谢谢你的帮助,太好了!我很高兴为您服务,祝您的项目好运!顺便说一下,Python有一个ImageMagick端口,但我自己不会说Python。
convert frame.png -crop 542x40+93+416 output.png