实现效果
在本示例中,您将学习如何使用opencv二进制图像运算操作进行图像遮罩。
实现代码
1,加载需要的库
import cv2
import numpy as np
import matplotlib.pyplot as plt
2,创建一个500×500的黑色图像,并画上白色圆形
circle_image = np.zeros((500, 500), np.uint8)
cv2.circle(circle_image, (250, 250), 100, 255, -1)
3,创建一个500×500的黑色图像,并画上白色矩形
rect_image = np.zeros((500, 500), np.uint8)
cv2.rectangle(rect_image, (100, 100), (400, 250), 255, -1)
4,圆形和矩形做&(和)运算
circle_and_rect_image = circle_image & rect_image
5,圆形和矩形做|(或)运算
circle_or_rect_image = circle_image | rect_image
6,查看结果
plt.figure(figsize=(10,10))
plt.subplot(221)
plt.axis('off')
plt.title('circle')
plt.imshow(circle_image, cmap='gray')
plt.subplot(222)
plt.axis('off')
plt.title('rectangle')
plt.imshow(rect_image, cmap='gray')
plt.subplot(223)
plt.axis('off')
plt.title('circle & rectangle')
plt.imshow(circle_and_rect_image, cmap='gray')
plt.subplot(224)
plt.axis('off')
plt.title('circle | rectangle')
plt.imshow(circle_or_rect_image, cmap='gray')
plt.tight_layout()
plt.show()
程序说明
使用np.uint8数组分别代表0和255的值来表示二进制图像(仅包含黑白像素的图像)非常方便。 OpenCV和NumPy都支持所有常用的二进制运算符:NOT,AND,OR和XOR。 它们可以通过别名(例如〜,&,|,^)以及通过函数(例如cv2.bitwise_not / np.bitwise_not和cv2.bitwise_and / np.bitwise_and)进行运算。