【问题标题】:Find positions of transparent areas in images using PIL使用 PIL 查找图像中透明区域的位置
【发布时间】:2016-10-14 19:17:17
【问题描述】:

我想用其他图像填充图像中的透明块。 例如: 在这张图片中,我们有 4 个透明块,需要填充。

需要找到块的位置并确定 x,y,x2,y2 坐标,这样我才能知道如何调整缩略图的大小。

有人知道我如何使用 PIL 或 unix 工具来做到这一点。 感谢您的帮助

【问题讨论】:

  • 问题是你不能指望一个块,因为你的星形不是一个。

标签: python imagemagick python-imaging-library alpha pillow


【解决方案1】:

您可以在命令行中使用 ImageMagick 或在 Python、Perl、PHP 或 C/C++ 中执行此操作。

首先,提取 alpha 通道:

convert input.png -alpha extract alpha.png

但我要做的是形态学,我想要黑底白字,所以把它倒过来:

convert input.png -alpha extract -negate alpha.png

现在运行一个“连接组件”分析来找到白色的斑点:

convert input.png -alpha extract -negate -threshold 50% \
    -define connected-components:verbose=true           \
    -define connected-components:area-threshold=100     \
    -connected-components 8 -auto-level null:

输出

Objects (id: bounding-box centroid area mean-color):
  0: 600x376+0+0 249.7,205.3 129723 srgb(0,0,0)
  2: 203x186+70+20 170.8,112.6 27425 srgb(255,255,255)
  1: 218x105+337+13 445.5,65.0 22890 srgb(255,255,255)
  4: 218x105+337+251 445.5,303.0 22890 srgb(255,255,255)
  3: 218x104+337+132 445.5,183.5 22672 srgb(255,255,255)

他们就在那里。忽略第一行,因为它是黑色的并且对应于整个图像。现在,查看第二行,您可以看到块为 203x186,偏移量为 +70+20。质心也在那里。让我把那个 blob 用红色框起来:

convert input.png -stroke red -fill none -draw "rectangle 70,20 272,205" z.png

【讨论】:

  • 太棒了 :) 谢谢
猜你喜欢
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-02
  • 1970-01-01
  • 2012-02-19
  • 2015-08-27
相关资源
最近更新 更多