bitwise_and是对二进制数据进行‘与’操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制‘与’操作,1&1=1,1&0=0,0&1=0,0&0=0
bitwise_or是对二进制数据进行‘或’操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制‘或’操作,1|1=1,1|0=1,0|1=1,0|0=0
bitwise_xor是对二进制数据进行‘异或’操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制‘异或’操作,1^1=0,1^0=1,0^1=1,0^0=0
bitwise_not是对二进制数据进行‘非’操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制‘非’操作,~1=0,~0=1
import cv2
import matplotlib.pyplot as plt
import numpy as np
def show(image):
plt.imshow(image)
plt.axis('off')
plt.show()
def imread(image):
image = cv2.imread(image)
image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
return image
rectangle = np.zeros((300,300,3),dtype='uint8')
white = (255,255,255)
cv2.rectangle(rectangle,(25,25),(275,275),white,-1)
show(rectangle)
circle = np.zeros((300,300,3),dtype='uint8')
cv2.circle(circle,(150,150),150,white,-1)
show(circle)
image = cv2.bitwise_and(rectangle,circle)
show(image)
image = cv2.bitwise_or(rectangle,circle)
show(image)
image = cv2.bitwise_xor(rectangle,circle)
show(image)
image = cv2.bitwise_not(circle)
show(image)
image = imread('test.jpeg')
show(image)
image.shape
mask = np.zeros(image.shape,dtype='uint8')
white = (255,255,255)
cv2.rectangle(mask,(50,50),(950,950),white,-1)
show(mask)
masked = cv2.bitwise_and(image,mask)
show(masked)
mask = np.zeros(image.shape,dtype='uint8')
white = (255,255,255)
cv2.circle(mask,(500,500),300,white,-1)
show(mask)
masked = cv2.bitwise_and(image,mask)
show(masked)