ImageMagick - 沿内部非透明对象边框分割透明度图像
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ImageMagick - 沿内部非透明对象边框分割透明度图像相关的知识,希望对你有一定的参考价值。
我有一个透明的图像,包含三个非透明对象,每个对象由透明度分隔。是否有一个简单的命令 - 没有一个有数以万计的选项,参数和随机极客走在图片中 - 将这张图片分解为三个部分,每个部分都在一个图片文件中。
请访问this link查看图片。
非常感谢你的帮助。
如果你想要的3个组件总是在同一个地方,你可以根据坐标提取:
convert image.png -crop 164x146+27+0 +repage result-0.png
convert image.png -crop 12x146+0+0 +repage result-1.png
convert image.png -crop 30x7+138+151 +repage result-2.png
最后一个是空的!
如果它们不总是在同一个地方,我会看图像alpha / transparency layer:
convert image.png -alpha extract alpha.png
因为它显示你想要的白色位,我会寻找白色斑点,使用“连接组件分析”
convert image.png -alpha extract
-define connected-components:verbose=true
-define connected-components:area-threshold=200
-connected-components 4 -normalize result.png
产量
Objects (id: bounding-box centroid area mean-color):
2: 164x146+27+0 108.5,72.5 23944 srgb(255,255,255)
3: 32x161+174+0 196.5,87.0 2670 srgb(2,2,2)
5: 174x15+0+146 79.8,152.8 2370 srgb(1,1,1)
1: 15x146+12+0 19.0,72.5 2190 srgb(2,2,2)
0: 12x146+0+0 5.5,72.5 1752 srgb(255,255,255)
39: 30x7+138+151 152.5,154.0 210 srgb(255,255,255)
这向我们展示了你图像中的所有斑点。回顾alpha图层,你只想要白色图层,你想要第二个字段就行了,因为它告诉你在哪里裁剪那个blob。
这导致我们:
#!/bin/bash
# Edit this according to your input image name
image="image.png"
i=0
convert "$image" -alpha extract
-define connected-components:verbose=true
-define connected-components:area-threshold=200
-connected-components 4 -normalize result.png |
awk '/255,255,255/{print $2}' |
while read c ; do
convert "$image" -crop "$c" +repage result-$i.png
((i=i+1))
done
希望能做到你想要的。
如果在类Unix系统上,您可以尝试使用ImageMagick的multicrop2 bash脚本。这是一个与Mark Setchell的代码示例非常相似的脚本,其中添加了更多的铃声和口哨声。
输入:
multicrop2 -b none -f 1 -u 3 image.png results.png
它将提取每个对象,例如Mark使用-connected-components,我的脚本也使用它们。 -b none告诉脚本背景颜色是透明的。 -f 1表示使用1%的模糊值将背景与对象分开。 -u 3表示没有对所得图像进行不旋转。
结果:
如果你不关心这些字母,你可以这样做
multicrop2 -b none -f 1 -u 3 -d 100 test.png results2.png
-d 100丢弃包含少于100个连续像素的任何区域。因此,您将只获得上面显示的前3个图像。
在http://www.fmwconcepts.com/imagemagick/index.php上查看我的脚本
以上是关于ImageMagick - 沿内部非透明对象边框分割透明度图像的主要内容,如果未能解决你的问题,请参考以下文章