opencv的掩膜mask

it2024-03-14  59

#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("*.jpg"); mask = Mat::zeros(image.size(), CV_8UC1);//建立与原图一样大小的mask图像,并将所有像素初始化为0,因此全图成了一张全黑色图。 mask(r1).setTo(255);//r1是设置好的感兴趣区域,将mask图中的r1区域的所有像素值设置为255,也就是整个r1区域变成了白色。 img1 = image(r1);//直接抠出目标区域 image.copyTo(img2, mask);原始图image拷贝到目的图img2上 image.copyTo(img3); img3.setTo(0, mask); imshow("Image sequence", image); imshow("img1", img1); imshow("img2", img2); imshow("img3", img3); imshow("mask", mask); waitKey(); return 0; }

原图(image)与掩膜(mask)进行与运算后得到了结果图(img2):

最新回复(0)