按位运算 这里包括的按位操作有:AND,OR,NOT,XOR
1.按位与 cv.bitwise_and()
dst = cv.bitwise_and(scr1 ,scr2 ,[,dst[,mask]])
scr1 输入数组1
scr2 输入数组2 dst:输入数组 与输入数组形状和类型相同
mask 可选参数 8 位单通道数组 用于指定要更改的元素位置
dst 目标图像
dst(i) = src1(i)^src2(i)
if mask(i) !=0
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img1 = np.zeros((1, 1, 3),np.uint8)
img1[:] = [0,0,100]
img2 = np.zeros((1, 1, 3),np.uint8)
img2[:] = [0,255,200]
dst = cv.bitwise_and(img1, img2)
imageRGB = cv.cvtColor(dst,cv.COLOR_BGR2RGB)
plt.imshow(imageRGB)
plt.show()
print(img1)
print(img2)
print(dst)
#bin(100) 0b1100100
#bin(200) 0b11001000 按位与 得 0b1000000 —64
输出结果:[[[ 0 0 100]]]
[[[ 0 255 200]]]
[[[ 0 0 64]]]
2.按位或 bitwise_or()
dst = cv.bitwise_or(src1,src2)
scr1 输入数组1
scr2 输入数组2 dst:输入数组 与输入数组形状和类型相同
mask 可选参数 8 位单通道数组 用于指定要更改的元素位置
dst(i) = src1(i) 或 src2(i)
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img1 = np.zeros((1, 1, 3),np.uint8)
img1[:] = [100,0,250]
img2 = np.zeros((1, 1, 3),np.uint8)
img2[:] = [0,250,230]
dst = cv.bitwise_or(img1,img2)
print(img1)
print(img2)
print(dst)
imageRGB = cv.cvtColor(dst,cv.COLOR_BGR2RGB)
plt.imshow(imageRGB)
plt.show()
输出结果:
[[[100 0 250]]]
[[[ 0 250 230]]]
[[[100 250 254]]]
3.按位非 bitwise_not()
dst = cv.bitwise_not(scr1 ,[,dst[,mask]])
scr 输入数组
scr2 输入数组2 dst:输入数组 与输入数组形状和类型相同
mask 可选参数 8 位单通道数组 用于指定要更改的元素位置
dst(i) = !src(i)
二进制逐位取反 (二进制+1 *(-1))
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img1 = np.zeros((1, 1, 3),np.uint8)
img1[:] = [0,150,250]
dst = cv.bitwise_not(img1)
print(dst)
print(dst + img1)
imageRGB = cv.cvtColor(dst,cv.COLOR_BGR2RGB)
plt.imshow(imageRGB)
plt.show()
4.按位异或 dst = cv.bitwise_xor(src1,src2)
scr1 输入数组1
scr2 输入数组2 dst:输入数组 与输入数组形状和类型相同
mask 可选参数 8 位单通道数组 用于指定要更改的元素位置
dst 目标图像
dst(i) = src1(i) 异或 src2(i)
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img1 = np.zeros((1, 1, 3),np.uint8)
img1[:] = [100,0,250]
img2 = np.zeros((1, 1, 3),np.uint8)
img2[:] = [0,250,230]
dst = cv.bitwise_xor(img1,img2)
img =cv.imread(‘D:/xi.JPG’)
img1 = cv.add(img,img)
cv.namedWindow(‘image’,cv.WINDOW_AUTOSIZE) #创建窗口显示,窗口名
cv.imshow(‘image’, img1) #显示图像
cv.waitKey(0) #0表示等待键盘输入,按任意键继续巡行程序
cv.destroyAllWindows() #关闭窗口
print(img1)
print(img2)
print(dst)
imageRGB = cv.cvtColor(dst,cv.COLOR_BGR2RGB)
plt.imshow(imageRGB)
plt.show()