凌顺
凌顺

目录

OpenCV Python 图像遮罩和二进制操作

实现效果

在本示例中,您将学习如何使用二进制图像运算操作。

实现代码

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()

file

程序说明

使用np.uint8数组分别代表0和255的值来表示二进制图像(仅包含黑白像素的图像)非常方便。 OpenCV和NumPy都支持所有常用的二进制运算符:NOT,AND,OR和XOR。 它们可以通过别名(例如〜,&,|,^)以及通过函数(例如cv2.bitwise_not / np.bitwise_not和cv2.bitwise_and / np.bitwise_and)进行运算。