在OpenCV中我们经常会遇到一个名字:Mask(掩膜)。很多函数都使用到它,那么这个Mask到底什么呢?
一开始我接触到Mask这个东西时,我还真是一头雾水啊,也对无法理解Mask到底有什么用。经过查阅大量资料后,也对Mask有一点自己的理解了,下面就说说我的理解。
比如我要对一幅图进行抠图操作,这就要用到Mask了,那我就以抠图为例,解释Mask在里面的作用。
先上程序,再一句一句剖析。
该程序的功能就是抠出指定区域。
#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"