김선일 김선일 - 2 months ago 61
C++ Question

I have mistake "approxPolyDP(ROI_Vertices, ROI_Poly, 1.0, true)" in OpenCV

I don't know what I've done wrong.

Mat mask(img.size(), CV_8UC1, Scalar::all(0));

// Create Polygon from vertices
vector<Point> ROI_Vertices(4);
ROI_Vertices.push_back(Point(196,40));
ROI_Vertices.push_back(Point(47,450));
ROI_Vertices.push_back(Point(204,450));
ROI_Vertices.push_back(Point(275,40));

vector<Point> ROI_Poly;

approxPolyDP(ROI_Vertices, ROI_Poly, 1.0, true);

// Fill polygon white
fillConvexPoly(mask, &ROI_Poly[0], ROI_Poly.size(), 255, 8, 0);

// Create new image for result storage
Mat resImage(480, 640, CV_8UC3);

// Cut out ROI and store it in imageDest
img.copyTo(resImage, mask);
imshow("h",img);
imshow("hh",resImage);


I think my program recognize

ROI_Vertices have Point(0,0)

How can I fix this?

Answer Source

That's simple.Remove the points (0,0). Make the following changes

vector<Point> ROI_Vertices(4);
ROI_Vertices.clear();