我试图将彩色遮罩应用于彩色图像。颜色蒙版是我想要应用于彩色图像的轮廓。除了粉红色的轮廓(BGR = [180, 105,255]
)之外,蒙版都是黑色的。奇怪的是,我可以使用以下方法应用青色[227,230,49]
的轮廓:
让彩色图像为imgColor
,青色轮廓为maskCyan
。同样,除了作为轮廓的一部分的像素[0,0,0]
之外,此蒙版均为黑色[227,230,49]
。然后我只需执行imgColor_with_cyan_outline = cv2.bitwise_or(imgColor, maskCyan)
即可在图像上应用此功能。当我使用maskPink
使用imgColor_with_pink_outline = cv2.bitwise_or(imgColor, maskPink)
使用粉红色像素而不是青色使用cv2.bitwise_or()
执行此操作时,我将返回原始图像,而不应用任何蒙版或轮廓。我想我只是误解garden install matplotlib --kivy
如何运作,但我不确定。
是否有其他方法可以将彩色遮罩应用于彩色图像?
答案 0 :(得分:3)
我认为您误解了按位OR
操作的属性。 cv2.bitwise_or
需要两个源图像和一个可选的蒙版。
cv2.bitwise_or(src1, src2, dst, mask)
因此,如果src1
的像素值为1且src2
的像素值为2,则src1 | src2
为:
0001 = src1
0010 = src2
0011 = src1 | src2
使得结果像素值为3.对于8位无符号字符图像,最大结果像素值将为255(135 | 235为255)。
答案 1 :(得分:0)
如果您有过滤的baundary,可以使用cv2.inrange
功能进行屏蔽。修改以下代码作为您的值。根据您的opencv版本检查语法
Pink=cv2.inrange(pink baundary)
Black=cv2.inrange(black baundary)
Mask= Pink+Black
有关详细信息,请阅读
https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_colorspaces/py_colorspaces.html