图像掩模(image mask):用选定的图像、图形或物体,对待处理的图像(局部或全部)进行遮挡来控制图像处理的区域或处理过程。由于覆盖的特定图像或物体称为掩模(mask)
在做图像处理的时候,对图像进行遮罩的需求非常多,接下来就以下面这张兔子的图片进行演示

import cv2
import numpy as np
imgName = './rabbit.jpg'
img = cv2.imread(imgName)
# 展示原图
cv2.imshow("img", img)
# 创建掩膜
mask = np.zeros([img.shape[0], img.shape[1]], dtype=np.uint8)
mask[50:250, 130:320] = 255
image = cv2.add(img, np.zeros(np.shape(img), dtype=np.uint8), mask=mask)
# 展示掩膜图片
cv2.imshow("mask", mask)
# 展示添加掩膜效果图片
cv2.imshow("image", image)
cv2.waitKey()
cv2.destroyAllWindows()


可以看到,这里创建了一个方形掩膜,同样的,如果我们需要创建圆形掩膜,可以按照下面这种方式进行添加。
import cv2
import numpy as np
imgName = './rabbit.jpg'
img = cv2.imread(imgName)
# 展示原图
cv2.imshow("img", img)
# 创建掩膜
x = 220
y = 150
r = 100
mask = np.zeros(img.shape[:2], dtype=np.uint8)
mask = cv2.circle(mask, (x, y), r, (255, 255, 255), -1)
image = cv2.add(img, np.zeros(np.shape(img), dtype=np.uint8), mask=mask)
# 展示掩膜图片
cv2.imshow("mask", mask)
# 展示添加掩膜效果图片
cv2.imshow("image", image)
cv2.waitKey()
cv2.destroyAllWindows()


因此,遮挡掩膜的原理很简单,首先创建一个和图片同样大小的全黑图像,再把需要显示的区域像素改成白色,最后使用cv2.add叠加image和mask就可以实现图像的遮挡显示。