OpenCV中的位操作包括以下四种
核心思想: src1和src2所有的数据做位运算,mask决定保留哪些数据,默认全部保留。
cv2.bitwise_and(src1, src2, dst=None, mask = None)
cv2.bitwise_or(src1, src2, dst=None, mask = None)
cv2.bitwise_not(src1, src2, dst=None, mask = None)
cv2.bitwise_xor(src1, src2, dst=None, mask = None)
举个例子:模拟两个2*2的彩色图像做与运算,并保留其中三个像素的值
img1 = np.array([[[2, 2, 2], [2, 2, 2]], [[2, 2, 2], [2, 2, 2]]])
img2 = np.array([[[2, 3, 3], [2, 3, 3]], [[2, 3, 5], [2, 3, 3]]])
mask = np.uint8([[1, 0], [1, 1]])
res = cv2.bitwise_or(img1, img2, mask=mask)
print(res)
"""
[[[2 3 3]
[0 0 0]]
[[2 3 7]
[2 3 3]]]
2 -> 10
3 -> 11
10 | 11 = 11
"""