在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"