OpenCV 掩膜的应用
掩膜是用选定的图像、图形或物体,对要处理的图像进行遮挡,来控制图像 处理的区域。
在数字图像处理中,通常使用二维矩阵数组进行掩膜。掩膜是由0和1组成一个二进制图像,利用该掩膜图像要处理的图像进行掩膜,其中1值的区域被处理,0 值区域被屏蔽,不会处理。
掩膜的主要用途是:
- 提取感兴趣区域:用预先制作的感兴趣区掩模与待处理图像进行”与“操作,得到感兴趣区图像,感兴趣区内图像值保持不变,而区外图像值都为0。
- 屏蔽作用:用掩模对图像上某些区域作屏蔽,使其不参加处理或不参加处理参数的计算,或仅对屏蔽区作处理或统计。
- 结构特征提取:用相似性变量或图像匹配方法检测和提取图像中与掩模相似的结构特征。
特殊形状图像制作
掩膜在遥感影像处理中使用较多,当提取道路或者河流,或者房屋时,通过一个掩膜矩阵来对图像进行像素过滤,然后将需要的地物或者标志突出显示出来。
使用cv.calcHist()
来查找完整图像的直方图。
如果要查找图像某些区域的直方图,只需在要查找直方图的区域上创建一个白色的掩膜图像,否则创建黑色, 然后将其作为掩码mask传递即可。
bitwise_and(src1, src2, dst=None, mask=None)
- src1、src2:为输入图像或标量,标量可以为单个数值或一个四元组
- dst:可选输出变量,如果需要使用非None则要先定义,且其大小与输入变量相同
- mask:图像掩膜,可选参数,为8位单通道的灰度图像,用于指定要更改的输出图像数组的元素,即输出图像像素只有mask对应位置元素不为0的部分才输出,否则该位置像素的所有通道分量都设置为0
返回值为结果图像矩阵,如果dst传入了实参,则返回值与dst对应 实参相同。
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt# 1. 直接以灰度图的方式读入
img = cv.imread('./1.png', 0)# 2. 创建蒙版
mask = np.zeros(img.shape[:2], np.uint8)
mask[100:150, 400:480] = 1 # 选定感兴趣区域 1或255# 3.掩模
masked_img = cv.bitwise_and(img, img, mask=mask)# 4. 统计掩膜后图像的灰度图
mask_histr = cv.calcHist([img], [0], mask, [256], [0, 256])# 5. 图像展示
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 8))
axes[0, 0].imshow(img, cmap=plt.cm.gray)
axes[0, 0].set_title("原图")
axes[0, 1].imshow(mask, cmap=plt.cm.gray)
axes[0, 1].set_title("蒙版数据")
axes[1, 0].imshow(masked_img, cmap=plt.cm.gray)
axes[1, 0].set_title("掩膜后数据")
axes[1, 1].plot(mask_histr)
axes[1, 1].grid()
axes[1, 1].set_title("灰度直方图")
plt.show()
掩膜后的数据
OpenCV 掩膜的应用相关推荐
- opencv掩膜操作
#include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace c ...
- opencv根据颜色抠图
代码只获取了红色,可以自行修改 第一个实现方法:np遍历 #include = utf-8 import cv2 import numpy as np #读取图片 img = cv2.imread(' ...
- OpenCV(十九)直方图(直方图计算、掩膜、均衡化、自适应均衡化)
目录 一.基础理论 1.原理及作用 2.专业术语 二.直方图计算 函数介绍: 1.灰度图 代码: 效果: 2.彩色图 代码: 三.直方图掩膜的应用(mask) 1.基础理论 2.代码 3.效果 四.直 ...
- 独家|OpenCV 1.3 矩阵的掩膜操作(附链接)
翻译:陈之炎 校对:王可汗.林夕本文约1600字,建议阅读5分钟本文为大家介绍了 OpenCV 矩阵的官方教程. 矩阵的掩膜操作(mask)并不难.主要思路为:根据掩膜矩阵(也称为内核kernel)重 ...
- 【OpenCV入门学习笔记1】:Mat对象的指针操作和掩膜操作
b站:https://www.bilibili.com/video/BV1uW411d7Wf?p=5 下面是我在b站上看视频学习的笔记和操作的示例代码 实例代码 #include<opencv2 ...
- opencv学习笔记21:直方图和掩膜 原理及其应用
直方图概念 如图:下面黑色图为上面图的直方图 横坐标:图像中各个像素点的灰度级 纵坐标:具有该灰度级的像素个数. 归一化直方图 横坐标:图像中各个像素点的灰度级 纵坐标:出现该灰度级的概率. DIMS ...
- [Python图像处理] 三十七.OpenCV直方图统计两万字详解(掩膜直方图、灰度直方图对比、黑夜白天预测)
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- OpenCV:详解掩膜mask
在OpenCV中我们经常会遇到一个名字:Mask(掩膜).很多函数都使用到它,那么这个Mask到底什么呢? 一开始我接触到Mask这个东西时,我还真是一头雾水啊,也对无法理解Mask到底有什么用.经过 ...
- python异或运算怎么算_小强学Python+OpenCV之-1.4.4掩膜mask及位运算(与、或、非、异或)...
问题引入 在小强学Python+OpenCV之-1.4.2裁剪一节,我们使用的是numpy数组切片功能实现图片区域的裁剪. 那么,如果我们想要裁剪图像中任意形状的区域时,应该怎么办呢? 答案是,使用掩 ...
最新文章
- 阿里某程序员爆料:面试一个重庆小伙子,却被对方微信调戏!
- 在leangoo里怎么复制卡片,删除卡片,查看任务轨迹?
- oracle 导出数据 utl,【原创】利用utl_file包进行表数据导出
- 同花顺2020年净利润17亿元增长近一倍,DAU超1400万
- Freemarker宏和函数的用法和区别
- matlab基本矩阵运算,matlab的矩阵基本运算问题已知A=[a,b,c;d,e,f;h,I,j],B=[l,m,n;x,y,z;q,o,p]...
- 找出数组中最大值次大值的一次遍历方法(C++)
- tar+openssl加密压缩解压缩
- r语言 plot_R语言直方图绘制hist(),plot()
- insert into select from要注意什么_老外说put two and two together什么意思?是2+2?
- 距7月30日PMP考试不足10天,应该做点什么?
- 如何快速实现一个颜色选择器
- 激光能类毕业论文文献都有哪些?
- pe系统进服务器2008,怎么用U盘启动win server 2008 pe?
- Android之多媒体视频的播放和录制
- php ajax jquery瀑布流,jQuery瀑布流插件——jQuery.Waterfall
- 多线程测速软件带宽叠加设置
- mysql sql 按天分组统计_Mysql按日、周、月进行分组统计
- 有哪些值得长期坚持下去的好习惯?
- Java版本和JDK版本对应关系
热门文章
- python2.7 + selenium3.4.3浏览器的选择
- 【转】c++重载、覆盖、隐藏——理不清的区别
- 友元程序集(C# 和 Visual Basic)
- msyql主从同步实践
- 免费音乐接口,当时写音乐播放器没资源,今天特意用nodejs写了一个,并布署到了cloudfo......
- 含有负边的图的最短路径(Bellman_ford算法)
- 震惊:菲律宾总统咧嘴冷笑视察惨剧!
- 为什么计算机系统安全具有整体性质,操作系统全局性质的形式化描述和验证
- 传入json对象_【Python基础】可迭代对象amp;迭代器对象及其实现
- asp.net学习之Repeater控件