在OpenCV中我們經(jīng)常會(huì)遇到一個(gè)名字:Mask(掩膜)。很多函數(shù)都使用到它,那么這個(gè)Mask到底什么呢?
一開(kāi)始我接觸到Mask這個(gè)東西時(shí),我還真是一頭霧水啊,也對(duì)無(wú)法理解Mask到底有什么用。經(jīng)過(guò)查閱大量資料后,也對(duì)Mask有一點(diǎn)自己的理解了,下面就說(shuō)說(shuō)我的理解。
比如我要對(duì)一幅圖進(jìn)行摳圖操作,這就要用到Mask了,那我就以摳圖為例,解釋Mask在里面的作用。
先上程序,再一句一句剖析。
該程序的功能就是摳出指定區(qū)域。
#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include <iostream>#include <stdio.h>using namespace std;using namespace cv;int main(){ Mat image, mask; Rect r1(100, 100, 250, 300); Mat img1, img2, img3, img4; image = imread("lol17.jpg"); mask = Mat::zeros(image.size(), CV_8UC1); mask(r1).setTo(255); img1 = image(r1); image.copyTo(img2, mask); image.copyTo(img3); img3.setTo(0, mask); imshow("Image sequence", image); imshow("img1", img1); imshow("img2", img2); imshow("img3", img3); imshow("mask"