随笔 - 884,  文章 - 0,  评论 - 37,  阅读 - 154万

一、什么是掩模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 
 4 using namespace cv;
 5 using namespace std;
 6 
 7 
 8 int main(int argc, char** argv)
 9 {
10     Mat src = imread("test.jpg");
11     Mat src1 = src.clone();
12     Mat dst, edge, gray;
13 
14     dst.create(src1.size(), src1.type());
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     src1.copyTo(dst, edge);
25 
26     imshow("效果图", dst);
27     
28     waitKey(0);
29     return 0;
30 
31 }
复制代码

 

posted on   一抹烟霞  阅读(10746)  评论(0编辑  收藏  举报
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

Live2D
欢迎阅读『OpenCV——掩膜(又称掩码)mask的原理和作用』

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示