05 图像位运算+mask掩膜+mask实战案例
opencv知识点:
- 绘制矩形 - rectangle
- 位运算 - 四种逻辑操作
- 色彩空间转换 - cvtColor
- 提取指定色彩范围区域 - inRange
- 更换图像背景 - copyTo的mask用法
本课所解决的问题:
- 如何绘制矩形?
- 绘制图形的最后一个参数shift有什么作用?
- 如何对图像进行位运算?
- 什么是mask?
- 如何提取指定色彩范围的区域?
- 如何更换图像的背景?
1.图像位运算
2.mask
细心的同学可能会注意到,在官方文档中四种位运算函数中都有mask
这个参数,它是什么呢?
什么是掩膜(mask)
图像掩膜与其类似,用选定的图像、图形或物体,对处理的图像(全部或局部) 进行遮挡,来控制图像处理的区域或处理过程。
数字图像处理中,图像掩模主要用于:
- ①提取感兴趣区(ROI区域)
用预先制作的感兴趣区掩模与待处理图像相乘(相当于与运算),得到感兴趣区图像,
感兴趣区内图像值保持不变,而区外图像值都为0。 - ②屏蔽作用
用掩模对图像上某些区域作屏蔽,使其不参加处理或不参加处理参数的计算,或仅对屏蔽区作处理或统计。 - ③结构特征提取
用相似性变量或图像匹配方法检测和提取图像中与掩模相似的结构特征。 - ④特殊形状图像的制作
mask示例
原图中的每个像素和掩膜中的每个对应像素进行与运算。
比如一个3 * 3的图像与3 * 3的掩膜进行运算,得到的结果图像就是:
mask模板的创建与使用
mask的模板有多种方法创建,但基本所有方法都要注意一下两点
- mask图像大小必须和原图像一致
- mask图像类型必须为CV_8UC1
//这里示范一种
Mat mask = Mat::zeros(src.size(),CV_8UC1);
/* 创建之后再经过一系列操作,把计划选定的区域置为255 */
/*
…………………………
…………………………
*/
使用的时候,我们只需要在传参的时候传入即可
之后该API就只会对原图像中,对应mask图像中值为255的区域操作了
3.mask实战案例
最后,我们通过一个案例来加深对mask的理解
12 图像色彩空间转换 - 进阶
本课所用API查阅
rectangle
bitwise_and
bitwise_or
bitwise_not
bitwise_xor
cvtColor
img *= 1./255;
cvtColor(img, img, COLOR_BGR2Luv);
inRange
copyTo