我有一组带有黑色伪像的透明PNG图片,就像这样: 我正在寻找一种自动清除边框的方法。我尝试简单地掩盖RGB值低于某个阈值的像素,但图像本身也可能包含黑色像素,这些像素也会被过滤掉。我正在使用Python3和opencv3/PIL。我的问题是:如何去除黑色边缘,同时保留不属于边缘的黑色像素? 编辑:如下面usr2564301所指出的,非常少(如果有的话)的边缘像素是纯黑色的。我仍然需要将它们删除,因此我想使用一些阈值值,并删除与透明像素相邻且满足以下条件的像素: 比阈值更暗,或 比任何相邻的非透明像素暗至少阈值。
尝试提取alpha通道并将其侵蚀几个像素。我用ImageMagick来说明这种技术,因为它更容易,但你也可以用OpenCV做同样的事情: convert pinkboythingwithcathead.png \( +clone -alpha extract -morphology erode disk:2 \) -compose copy-alpha -composite result.png
您可以使用以下方法在ImageMagick中消除alpha通道的边缘锯齿:输入: convert image.png -channel a -blur 0x2 -level 50x100% +channel result.png 如果想要较窄的黑色边框,可以将2调小;如果想要较宽的黑色边框,则将2调大。
threshold
,或者比纯黑色至少亮threshold
。 - Nee