专栏地址:『youcans 的 OpenCV 例程 200 篇』
文章目录:『youcans 的 OpenCV 例程200篇 - 总目录』
【youcans 的 OpenCV 例程200篇】19. 图像的圆形遮罩
图像掩模(image mask),也常被写成 “图像掩膜”,是用特定的图像或函数对另一图像进行覆盖或遮蔽,以控制图像处理的区域或图像处理的过程。图像掩模常用于提取感兴趣区域(ROI)、提取结构特征,或制作特殊形状的图像。
函数 cv2.add() 用于图像的加法运算,可以使用掩模图像进行遮蔽。
cv2.add(src1, src2 [, dst[, mask[, dtype]]) → dst
掩模图像中的黑色区域(数值为 0),cv2.add 的输出也为黑色(数值为 0);掩模图像中的非黑色区域(非 0 值),cv2.add 的输出为加法输出。换句话说,函数 cv2.add 进行加法运算,对被掩模图像遮蔽的黑色区域不进行处理,保持黑色。
注意事项:
- 掩模图像 mask 为 8位灰度格式,遮蔽区域为黑色(数值为 0),非遮蔽区域为白色(数值为 255),也称为开窗区域、窗口。
- 掩模图像与进行加法运算的图像 src1, src2 的形状必须相同。
扩展例程:1.28 圆形和其它形状的图像遮罩
# 1.28 图像的加法 (圆形和其它形状的遮罩)img1 = cv2.imread("../images/imgLena.tif") # 读取彩色图像(BGR)img2 = cv2.imread("../images/imgB3.jpg") # 读取彩色图像(BGR)Mask1 = np.zeros((img1.shape[0], img1.shape[1]), dtype=np.uint8) # 返回与图像 img1 尺寸相同的全零数组Mask2 = Mask1.copy()cv2.circle(Mask1, (285, 285), 110, (255, 255, 255), -1) # -1 表示实心cv2.ellipse(Mask2, (285, 285), (100, 150), 0, 0, 360, 255, -1) # -1 表示实心imgAddMask1 = cv2.add(img1, np.zeros(np.shape(img1), dtype=np.uint8), mask=Mask1) # 提取圆形 ROIimgAddMask2 = cv2.add(img1, np.zeros(np.shape(img1), dtype=np.uint8), mask=Mask2) # 提取椭圆 ROIcv2.imshow("circularMask", Mask1) # 显示掩模图像 Maskcv2.imshow("circularROI", imgAddMask1) # 显示掩模加法结果 imgAddMask1cv2.imshow("ellipseROI", imgAddMask2) # 显示掩模加法结果 imgAddMask2key = cv2.waitKey(0) # 等待按键命令
本例程运行结果如下。
通过设计圆形、椭圆形或其它形状的图像遮罩,可以从一张图像中提取不同形状的区域。
(本节完)
【第2章:图像的数值运算】
18. 图像的掩模加法
19. 图像的圆形遮罩
20. 图像的按位运算
版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/125112487)
Copyright 2022 youcans, XUPT
Crated:2021-11-18
欢迎关注专栏: 『youcans 的 OpenCV 例程 200 篇』
更多内容请见:>『youcans 的 OpenCV 例程200篇 - 总目录』(https://blog.csdn.net/youcans/article/details/125112487)