CV_EXPORTS_W voidfillPoly(InputOutputArray img, InputArrayOfArrays pts, const Scalar& color, int lineType = LINE_8, int shift = 0, Point offset = Point() );
这个 API 比较好理解,img 是需要画多边形的图像, pts 是多边形的各个顶点,color 和 lineType 分别是多边形的颜色和边框类型,shift 和 offset 分别是对点坐标的偏移和多边形整体的偏移。需要注意的是由于这个 API 不限定用来画凸多边形,也可以用来画凹多边形或者自身交叉的多边形,所以 pts 的顺序需要保证是你想要的多边形的顶点顺序。下面用两个例子说明。
1 2 3 4 5 6 7 8 9
cv::Mat image(cv::Size(540, 540), CV_8UC1); std::vector<cv::Point> fillContSingle; //add all points of the contour to the vector fillContSingle.push_back(cv::Point(200, 100)); fillContSingle.push_back(cv::Point(200, 200)); fillContSingle.push_back(cv::Point(100, 200)); fillContSingle.push_back(cv::Point(300, 100));
std::vector<cv::Point> fillContSingle; //add all points of the contour to the vector fillContSingle.push_back(cv::Point(100, 100)); fillContSingle.push_back(cv::Point(100, 200)); fillContSingle.push_back(cv::Point(-200, 200)); fillContSingle.push_back(cv::Point(200, 100));