#include<iostream>
#include<opencv2/opencv.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<opencv2/highgui.hpp>
using namespace std;
using namespace cv;
Mat img1;
Mat mask;
Mat res;
Point center;
Point end_1;
void onMouse(int, int, int, int, void*);
int main()
{
img1 = imread("C:/Users/Administrator/Desktop/pattern.bmp", IMREAD_COLOR);
//cout << mask;
mask = Mat(Size(img1.cols, img1.rows), CV_8UC1, Scalar(0));
string windowname = "windows";
namedWindow(windowname, WINDOW_AUTOSIZE);
imshow(windowname, img1);
setMouseCallback(windowname, onMouse, 0);
waitKey();
}
void onMouse(int event, int x, int y, int, void*)
{
if (event == EVENT_LBUTTONDOWN)
{
center = Point(x, y);
}
else if (event == EVENT_LBUTTONUP)
{
Mat img2;
end_1 = Point(x, y);
float radius = pow((pow((end_1.x - center.x), 2) + (pow((end_1.y - center.y), 2))), 0.5);
circle(mask, center, radius, Scalar(255, 255, 255), -1);
circle(img1, center, radius, Scalar(255, 255, 0), -1);
imshow("windows", img1);
bitwise_not(mask,res);
bitwise_and(img1, img1, img2, res);
imshow("img2", img2);
}
}
opencv4 通过鼠标绘制掩模进行抠图
最新推荐文章于 2024-07-16 13:43:26 发布