一、什么是掩模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 Mat srcImage = imread("E:\\CodeResource\\opencv\\car_pic\\test.jpg"); 2 Mat logoImage = imread("E:\\CodeResource\\opencv\\car_pic\\logo.png"); 3 4 //255或者1都行,只要非0就行 5 Mat mask(logoImage.size(),CV_8UC1,Scalar::all(255)); 6 Rect r1(0,10,mask.cols,10); 7 mask(r1).setTo(0); 8 9 Mat roiImage = srcImage(Rect(100, 100, logoImage.cols, logoImage.rows)); 10 logoImage.copyTo(roiImage, mask); 11 12 imshow("srcImage", srcImage); 13 waitKey(0);