【发布时间】:2023-03-04 22:51:02
【问题描述】:
我正在尝试将颜色蒙版应用于彩色图像。颜色蒙版是我要应用于彩色图像的轮廓。除了粉红色的轮廓(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() 的工作原理,但我不确定。
还有其他方法可以将颜色蒙版应用于彩色图像吗?
【问题讨论】:
-
按位或 -> 获取每个位并与另一个图像中的相同位进行 OR。例如,如果您在一张图像中像素为 63,而在另一张图像中像素为 255,则结果为 255。如果您有 63 和 72,将给出 127(63 是 00111111,72 是二进制的 01001000)。您可以将掩码的反转作为二进制(白色和黑色)来“删除”像素,或将它们从图像中变为黑色。然后用青色添加它,你会在图像中得到青色,或者使用 numpy 替换为@DanMašek 链接