【OpenCV 例程200篇】19. 图像的圆形遮罩

专栏地址:『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 进行加法运算,对被掩模图像遮蔽的黑色区域不进行处理,保持黑色。

注意事项:

  1. 掩模图像 mask 为 8位灰度格式,遮蔽区域为黑色(数值为 0),非遮蔽区域为白色(数值为 255),也称为开窗区域、窗口。
  2. 掩模图像与进行加法运算的图像 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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【OpenCV 例程200篇】20. 图像的按位运算(cv2.bitwise)

专栏地址:『youcans 的 OpenCV 例程 200 篇』 文章目录:『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】20. 图像的按位运算 函数 cv2.bitwise 提供了图像的位运算,对图像的像素点值按位操作,快速高效…

栈式自编码算法

栈式自编码算法 Contents [hide]1 概述2 训练3 具体实例4 讨论5 中英文对照6 中文译者 概述 逐层贪婪训练法依次训练网络的每一层,进而预训练整个深度神经网络。在本节中,我们将会学习如何将自编码器“栈化”到逐层贪婪训练法中,从而预训练…

【OpenCV 例程200篇】21. 图像的叠加

『youcans 的 OpenCV 例程200篇 - 总目录』 【OpenCV 例程200篇】21. 图像的叠加 两张图像直接进行加法运算后图像的颜色会改变,通过加权加法实现图像混合后图像的透明度会改变,都不能实现图像的叠加。 实现图像的叠加,需要综合运用图像阈值…

微调多层自编码算法

微调多层自编码算法 Contents [hide]1 介绍2 一般策略3 使用反向传播法进行微调4 中英文对照5 中文译者 介绍 微调是深度学习中的常用策略,可以大幅提升一个栈式自编码神经网络的性能表现。从更高的视角来讲,微调将栈式自编码神经网络的所有层视为一个…

【OpenCV 例程200篇】22. 图像添加非中文文字(cv2.putText)

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】22. 图像添加非中文文字 函数 cv2.putText() 用于在图像上绘制文本字符串,即添加文字。 OpenCV 不支持显示中文字符,使用 cv2.putText() 时添加的文本字符串不能包含中文字符…

自我学习

自我学习 今天让我们来完成自我学习的代码。完成这个代码需要结合稀疏自编码和softmax分类器,具体的可以看我以前的博客。依赖MNIST DatasetSupport functions for loading MNIST in MatlabStarter Code (stl_exercise.zip) 第一步:生成相应的输入和测试数据集这需要…

【OpenCV 例程200篇】23. 图像添加中文文字(ImageDraw.Draw)

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】23. 图像添加中文文字 OpenCV 不支持显示中文字符,使用 cv2.putText() 时添加的文本字符串不能包含中文字符(包括中文标点符号)。在图像中添加中文字符&#xff0…

【OpenCV 例程200篇】24. 图像的仿射变换(cv2.warpAffine)

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】24. 图像的仿射变换 几何变换的可以分为等距变换、相似变换、仿射变换和投影变换。在很多书籍中把等距变换、相似变换都称为仿射变换,常见的仿射变换包括平移、旋转、缩放、翻转、斜切等…

从自我学习到深层网络

从自我学习到深层网络 在前一节中,我们利用自编码器来学习输入至 softmax 或 logistic 回归分类器的特征。这些特征仅利用未标注数据学习获得。在本节中,我们描述如何利用已标注数据进行微调,从而进一步优化这些特征。如果有大量已标注数据&a…

【OpenCV 例程200篇】25. 图像的平移(cv2.warpAffine)

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】25. 图像的平移 平移是物体位置在水平和垂直方向的移动。 像素点 (x,y) 沿 x 轴平移 dx、沿 y 轴平移 dy,可以由以下公式描述: [x~y~1]MAT[xy1],MAT[10dx01dy001]\begin{bmat…

JavaScript 灯泡暗亮

程序解说:点击灯泡之后切换灯泡明暗; 点击暗的灯泡的时候灯泡会随之发亮,并且下方会输出灯泡打开时间, 点击亮的灯泡的时候灯泡会随之熄灭,并且下方会输出灯泡关闭时间. 点击图片亮暗发生变化(准备两张图片…

【OpenCV 例程200篇】26. 图像的旋转(以原点为中心)

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】26. 图像的旋转(以原点为中心) 图像以原点 (0, 0) 为中心、顺时针旋转角度 θ 进行旋转操作,可以由以下公式描述: [x~y~1]MAR[xy1],MAR[cosθ−sinθ0s…

电脑滑动关机

如何让你的电脑可以像手机一样滑动关机 只需点击下拉,让你享用更快更炫酷的关机方法(滑动关机) 新建一个记事本(滑动关机.txt) 打开滑动关机.txt文件,在该文件中写入 slidetoshutdown 代码段并保存文件。…

php里面的MySql

php里面的MySql SQL 是一种标准 - 但是... SQL是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL语句用于取回和更新数据库中的数据。SQL可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase以及其他数据…

【OpenCV 例程200篇】27. 图像的旋转(以任意点为中心)

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】27. 图像的旋转(以任意点为中心) 图像以任意点 (x0, y0) 为旋转中心、顺时针旋转角度 θ 的旋转操作,可以先将原点平移到旋转中心 (x0, y0) ,然后按照原…

OC里面的类

OC里面的类 类的定义 不指定方法的返回值 -(id)initWithObject:(id)obj; - initWithObject:obj; 省略返回值时,默认的类型是id,也就是上面两条等价,在c语言中默认是int 接口 类公开给外部的,关于使用这个类的消息叫接口。 类的定…

人员信息管理

使用Jsp Servlet Tomcat 实现对sqlServer数据库中人员信息的管理:(MVC架构) 准备相应的数据库 链接数据库 实现对数据库中人员信息的增删改查 页面总体效果如下所示: 点击删除之后会删除掉选中的这一行只显示剩下几行内容&a…

【OpenCV 例程200篇】28. 图像的旋转(直角旋转)cv2.rotate

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】28. 图像的旋转(直角旋转) 旋转角度为 90,180,270 度时,可以用 cv2.rotate(src, rotateCode) 函数实现,该方法实际上是通过矩阵…

爱心表白

程序员并不是没有一点乐趣整天枯燥无味的游走在代码中的,在这里给大家提供了一个表白代码 功能描述: 1:能够计算任意两个时间的之间相隔的天数,2:在相隔天数下面输出心形并且心形里面还有英文我爱你字样。相信你已经迫…

OC与C混合编程

OC与C混合编程 oc中使用c语言函数 类的实现文件中可以定义c语言风格的函数,但仅限于implementation的前面,implementation和end之间,end之后 如果函数的作用域仅限于这个文件,那么给函数加上static修饰符比较好。 函数不能之间调用…