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 
 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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM