Ubuntu下自动合并两幅二值图像并保留白色像素的方法
解决二值图像合并白像素的问题
嘿,这事儿其实很简单!你要的是把两幅图里的所有白色像素都保留下来(相当于像素层面的逻辑或操作),composite的-blend参数确实不对路——它是用来做色彩渐变混合的,不是干这个的。
给你两个靠谱的解决方案,都是基于ImageMagick的:
方法1:用composite命令的-compose or参数
直接对两幅图做像素逻辑或运算,黑像素(0)和白像素(255)的或运算正好能保留所有白区域:
composite -compose or image1.png image2.png result.png
方法2:用convert命令的-evaluate-sequence max
另一种思路是取两幅图对应像素的最大值——白像素的亮度值是255,是最大值,所以不管哪幅图里有白像素,结果里都会保留:
convert image1.png image2.png -evaluate-sequence max result.png
额外:快速生成测试用的image1和image2
如果你还没生成测试图,可以用这两条命令快速创建:
# 生成image1.png:20x20黑底,(10,10)和(11,11)为白 convert -size 20x20 xc:black -draw "point 10,10 point 11,11" image1.png # 生成image2.png:20x20黑底,(5,4)为白 convert -size 20x20 xc:black -draw "point 5,4" image2.png
为什么-blend不行?举个例子,-blend 50x50会把两个像素值取平均,黑(0)加白(255)会得到灰色(127),这完全不符合你要的纯黑纯白二值图需求,所以肯定用错参数啦。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

