OpenCV掩模mask的原理和作用

时间:2023-12-21 23:23:14

一、什么是掩模mask

OpenCV中很多函数都带有一个mask参数,mask被称为掩模。图像掩模一般用来对处理的图像(全部或者局部)进行遮挡,来控制图像处理的区域或处理过程。

二、掩模原理

掩模一般是小于等于源图像的单通道矩阵,掩模中的值分为两种0和非0。以Mat::copyTo为例,当mask的值不为0,则将源图像拷贝到目标图像,当mask为0,则不进行拷贝,目标图像保持不变。

源图像            目标图像          mask            源图像拷贝叠加到目标图像上得到新的目标图像

100  30  55    50  220  210     0    0   0                50  220  210

20  180  88    99  77  12      255  255  255                  20    180        88

33  28  110    92  110  115     255  255  255               33        28         110

三、示例

 Mat srcImage = imread("E:\\CodeResource\\opencv\\car_pic\\test.jpg");
Mat logoImage = imread("E:\\CodeResource\\opencv\\car_pic\\logo.png"); //255或者1都行,只要非0就行
Mat mask(logoImage.size(),CV_8UC1,Scalar::all());
Rect r1(,,mask.cols,);
mask(r1).setTo(); Mat roiImage = srcImage(Rect(, , logoImage.cols, logoImage.rows));
logoImage.copyTo(roiImage, mask); imshow("srcImage", srcImage);
waitKey();