多边形填充与绘制
1.绘制多边形polylines(输出, 多边形点集, 多边形是否闭合Flag, 线段颜色, 线段粗细(不能-1表示填充), 绘制线段方式, 缩放比例(0是不缩放,4是1/4))
2.填充多边形fillPoly(输出, 多边形点集, 线段颜色, 绘制线段方式, 缩放比例(0是不缩放,4是1/4))
3.drawContours(输出图片, 存放多边形point数组, 绘制第几个多边形(-1表示全部), 绘制/填充的颜色, 线段的粗细(-1表示填充), 绘制线段方式)。drawContours一个函数就可以完成绘制/填充,并且可以同时对contours中的多个多边形进行操作
void QuickDemo::polyline_drawing_demo() {
Mat canvas = Mat::zeros(Size(512, 512), CV_8UC3);
int w = canvas.cols;
int h = canvas.rows;
Point p1(100, 100);
Point p2(300, 150);
Point p3(300, 350);
Point p4(250, 450);
Point p5(50, 450);
std::vector<Point> pts;//数组初始化时如果给了数组的大小可以用下标赋值,否则要用push_back
pts.push_back(p1);
pts.push_back(p2);
pts.push_back(p3);
pts.push_back(p3);
pts.push_back(p4);
pts.push_back(p5);
polylines(canvas, pts, true, Scalar(0, 0, 255), 5, 8, 0);//绘制多边形polylines(输出, 多边形点集, 多边形是否闭合Flag, 线段颜色, 线段粗细(不能-1表示填充), 绘制线段方式, 缩放比例(0是不缩放,4是1/4))
fillPoly(canvas, pts, Scalar(0, 255, 0), 8, 0);//填充多边形fillPoly(输出, 多边形点集, 线段颜色, 绘制线段方式, 缩放比例(0是不缩放,4是1/4))
//std::vector<std::vector<Point>> contours;//保存需要绘制的多边形数组,也就是同时存放多个多边形
//contours.push_back(pts);
//drawContours(canvas, contours, 0, Scalar(0, 0, 255), -1, 8);//drawContours(输出图片, 存放多边形point数组, 绘制第几个多边形(-1表示全部), 绘制/填充的颜色, 线段的粗细(-1表示填充), 绘制线段方式)。drawContours一个函数就可以完成绘制/填充,并且可以同时对contours中的多个多边形进行操作
imshow("绘制多边形", canvas);
}