2016-08-02 20 views
1

我想使用ImageMagick从除黑色背景的文本字段之外的图像中裁剪所有内容(请参见下面的示例)。我们的目标是隔离黑色区域,以便在文本图像上进行额外的工作。我需要为数百个图像做这些工作,并且目标区域在图像之间稍有偏移(图像是来自电影视频的屏幕截图)。使用ImageMagick从图像裁剪文本字段

因此,我需要自适应地识别黑色背景的区域,然后从图像中删除其他所有内容。

例如,把这个: enter image description here

进入这个:
enter image description here

主要关注的是感兴趣的区域的左下角边缘在所有的数百张照片的对齐。

+0

冷的问题,可我有一对夫妇更多的图像来测试时,我请明天起床? –

回答

1

除看一些例子,你可以门槛,做一个“连接成分分析”这样,寻找最宽的黑色区域:

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) 

如果我画的,红色的,确定第二Blob(你可以看到它是黑色的,宽,高度不高):

convert frame.png -fill none -stroke red -draw "rectangle 93,416 635,456" output.png 

enter image description here

您可以用类似的命令裁剪出来:

convert frame.png -crop 542x40+93+416 output.png 

enter image description here

产品关键词:时间码,时间码,视频

+0

谢谢@Mark,这看起来很有希望。我会测试它,并尝试与你分享更多的图片。是否有合理简单的方法从详细输出保存或传递这些作物坐标? – Bird

+0

优秀!你可能想稍微减少30%。您可以很容易地捕捉坐标,但方法取决于您使用的操作系统 - Linux/OSX/Windows?您还可以将图像预先裁剪至文本的可能区域以提高准确性。 –

+0

我只是在几张照片上测试它,文本区域对齐得更好。实际上,我使用'subprocess.call'命令将整个过程封装在一个Python脚本中,我想我可以找到一种方法将坐标反馈到Python中。这绝对是一个很好的起点,ImageMagick可以做这么多!谢谢您的帮助。 – Bird