OpenCV——掩膜(⼜称掩码)mask的原理和作⽤
⼀、什么是掩模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
三、⽰例
1 #include <opencv2/opencv.hpp>
2 #include <iostream>
3
4using namespace cv;
5using namespace std;
6
7
8int main(int argc, char** argv)namespace是干嘛的
9 {
10    Mat src = imread("test.jpg");
11    Mat src1 = src.clone();
12    Mat dst, edge, gray;
13
14    ate(src1.size(), pe());
15    dst = Scalar::all(0);
16
17    cvtColor(src1, gray, COLOR_BGR2GRAY);
18
19    blur(gray, edge, Size(3, 3));
20
21    Canny(edge, edge, 3, 9, 3);
22
23//掩膜的存在使得只有边缘部分被copy
24    pyTo(dst, edge);
25
26    imshow("效果图", dst);
27
28    waitKey(0);
29return0;
30
31 }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。