【OpenCV 例程200篇】18. 图像的掩模加法(mask)

专栏地址:『youcans 的 OpenCV 例程 200 篇』
文章目录:『youcans 的 OpenCV 例程200篇 - 总目录』


【youcans 的 OpenCV 例程200篇】18. 图像的掩模加法


图像掩模(image mask),也常被写成 “图像掩膜”,是用特定的图像或函数对另一图像进行覆盖或遮蔽,以控制图像处理的区域或图像处理的过程。图像掩模常用于提取感兴趣区域(ROI)、提取结构特征,或制作特殊形状的图像。

用于遮蔽的图像或函数,称为掩模、掩像、模板或遮罩(mask)。对图像进行处理时,被遮蔽的区域不参加处理,或不参加处理参数的计算;或者相反地,仅对被遮蔽的区域进行处理或统计。

函数 cv2.add() 用于图像的加法运算,可以使用掩模图像进行遮蔽。

cv2.add(src1, src2 [, dst[, mask[, dtype]]) → dst

掩模图像中的黑色区域(数值为 0),cv2.add 的输出也为黑色(数值为 0);掩模图像中的非黑色区域(非 0 值),cv2.add 的输出为加法输出。换句话说,函数 cv2.add 进行加法运算,对被掩模图像遮蔽的黑色区域不进行处理,保持黑色。

注意事项:

  1. 掩模图像 mask 为 8位灰度格式,遮蔽区域为黑色(数值为 0),非遮蔽区域为白色(数值为 255),也称为开窗区域、窗口。
  2. 掩模图像与进行加法运算的图像 src1, src2 的形状必须相同。

基本例程:1.27 图像的掩模加法

    # 1.27 图像的加法 (掩模 mask)
    img1 = cv2.imread("../images/imgLena.tif")  # 读取彩色图像(BGR)
    img2 = cv2.imread("../images/imgB3.jpg")  # 读取彩色图像(BGR)

    Mask = np.zeros((img1.shape[0], img1.shape[1]), dtype=np.uint8)  # 返回与图像 img1 尺寸相同的全零数组
    xmin, ymin, w, h = 180, 190, 200, 200  # 矩形裁剪区域 (ymin:ymin+h, xmin:xmin+w) 的位置参数
    Mask[ymin:ymin+h, xmin:xmin+w] = 255  # 掩模图像,ROI 为白色,其它区域为黑色
    print(img1.shape, img2.shape, Mask.shape)

    imgAddMask1 = cv2.add(img1, img2, mask=Mask)  # 带有掩模 mask 的加法
    imgAddMask2 = cv2.add(img1, np.zeros(np.shape(img1), dtype=np.uint8), mask=Mask)  # 提取 ROI

    cv2.imshow("MaskImage", Mask)  # 显示掩模图像 Mask
    cv2.imshow("MaskAdd", imgAddMask1)  # 显示掩模加法结果 imgAddMask1
    cv2.imshow("MaskROI", imgAddMask2)  # 显示从 img1 提取的 ROI
    key = cv2.waitKey(0)  # 等待按键命令

例程说明 1.27:

本例程运行结果如下。

imgAddMask1 是标准的掩模加法,在窗口区域将 img1 与 img2 进行饱和加法,其它区域为黑色遮蔽。imgAddMask2 中加法运算的第二图像是全黑图像(数值为 0),掩模加法的结果是从第一图像中提取遮蔽窗口,该操作生成的图像是从原图中提取感兴趣区域(ROI)、黑色遮蔽其它区域。

在这里插入图片描述


(本节完)



版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/125112487)
Copyright 2022 youcans, XUPT
Crated:2021-11-18

【第2章:图像的数值运算】
18. 图像的掩模加法
19. 图像的圆形遮罩
20. 图像的按位运算

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

youcans_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值