使用 PIL 查找图像中透明区域的位置
Find positions of transparent areas in images using PIL
我想用别人的图片填充图片中的透明块。
例如:
在这个图像中我们有 4 个透明块, 需要填充。
需要找到方块的位置并确定 x,y,x2,y2 坐标,这样我才能知道如何调整缩略图的大小。
有人知道我如何使用 PIL 或 unix 工具来做到这一点。
感谢您的帮助
您可以在 command-line 使用 ImageMagick 或在 Python、Perl、PHP 或 C/C 中执行此操作++.
首先,提取alpha通道:
convert input.png -alpha extract alpha.png
但是我要做形态学,我想要黑底白字,所以反转一下:
convert input.png -alpha extract -negate alpha.png
现在 运行 进行 "Connected Components" 分析以找到白色斑点:
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)
他们就在那里。忽略第一行,因为它是黑色的并且对应于整个图像。现在,查看第二行,您可以看到该块在偏移量 +70+20 处为 203x186。质心也在那里。让我用红色框住那个斑点:
convert input.png -stroke red -fill none -draw "rectangle 70,20 272,205" z.png
我想用别人的图片填充图片中的透明块。 例如: 在这个图像中我们有 4 个透明块, 需要填充。
需要找到方块的位置并确定 x,y,x2,y2 坐标,这样我才能知道如何调整缩略图的大小。
有人知道我如何使用 PIL 或 unix 工具来做到这一点。 感谢您的帮助
您可以在 command-line 使用 ImageMagick 或在 Python、Perl、PHP 或 C/C 中执行此操作++.
首先,提取alpha通道:
convert input.png -alpha extract alpha.png
但是我要做形态学,我想要黑底白字,所以反转一下:
convert input.png -alpha extract -negate alpha.png
现在 运行 进行 "Connected Components" 分析以找到白色斑点:
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)
他们就在那里。忽略第一行,因为它是黑色的并且对应于整个图像。现在,查看第二行,您可以看到该块在偏移量 +70+20 处为 203x186。质心也在那里。让我用红色框住那个斑点:
convert input.png -stroke red -fill none -draw "rectangle 70,20 272,205" z.png