【问题标题】:Use ImageMagick to crop text field from image使用 ImageMagick 从图像中裁剪文本字段
【发布时间】:2016-12-08 05:07:48
【问题描述】:

我想使用 ImageMagick 从图像中裁剪除黑色背景的文本字段以外的所有内容(参见下面的示例)。目标是隔离黑色区域,以便对文本图像进行额外处理。我需要为数百张图像做这些,并且目标区域在图像之间略有变化(图像是电影视频的屏幕截图)。

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

例如,转动这个:

进入这个:

主要问题是感兴趣区域的左下边缘在所有数百张图像中对齐。

【问题讨论】:

  • 很酷的问题,我明天起床时可以再提供几张图片来测试一下吗?

标签: image-processing imagemagick crop


【解决方案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)

如果我用红色画出第二个标识的斑点(你可以看到它是黑色的、宽的而且不是很高):

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

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

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

标签:时间码、时间码、视频

【讨论】:

  • 谢谢@Mark,这看起来很有希望。我将对其进行测试,并尝试与您分享更多图片。是否有一种相当简单的方法可以从详细输出中保存或传递这些裁剪坐标?
  • 太棒了!您可能想稍微减少30%。您可以很容易地捕获坐标,但方法取决于您使用的操作系统 - Linux/OSX/Windows?您还可以将图像预先裁剪到文本的可能区域以提高准确性。
  • 我刚刚在几张图片上进行了测试,文本区域对齐得更好。我实际上使用subprocess.call 命令将整个过程包装在Python 脚本中,我想我可以找到一种方法将坐标反馈到Python 中。这绝对是一个很好的起点,ImageMagick 可以做很多事情!感谢您的帮助。
  • 太棒了!我很高兴能为您服务——祝您的项目好运!顺便说一下,有一个 ImageMagick 移植到 Python,但我自己不会说 Python。
猜你喜欢
  • 2013-08-06
  • 2012-05-19
  • 1970-01-01
  • 2012-05-16
  • 2017-03-21
  • 1970-01-01
  • 2018-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多