1.API
1.polylines
绘制多条多边形曲线
共7个参数
第1个参数 输入
第2个参数 输入多边形点集(绘制边的顺序,与点集数组中点的顺序有关)
第3个参数 isclosed(bool类型)
第4个参数 多边形颜色
第5个参数 线宽
第6个参数 lineType
第7个参数 shift(之前已经讲过,这里不再赘述)
示例代码
//函数定义
void polyline_drawing_demo();
//函数实现
void QuickDemo::polyline_drawing_demo() {
Mat canvas = Mat::zeros(Size(256, 256), CV_8UC3);
Point p1(40,40),p2(80,80),p3(80,60),p4(120,80),p5(120,60),p6(160,40);
std::vector<Point> pts;
pts.push_back(p1);
pts.push_back(p2);
pts.push_back(p3);
pts.push_back(p4);
pts.push_back(p5);
pts.push_back(p6);
polylines(canvas, pts, true, Scalar(200, 0, 0), 5, 8, 0);
imshow("000",canvas);
}
2.fillPoly 填充绘制的多边形
共6个参数
第1个参数 输入
第2个参数 点集数组
第3个参数 填充颜色
第4个参数 lineType
第5个参数 shift(不再赘述)
第6个参数 轮廓所有点的可选偏移
实例代码 点的顺序很重要,按顺序的
void QuickDemo::polyline_drawing_demo() {
Mat canvas = Mat::zeros(Size(256, 256), CV_8UC3);
Point p1(40,40),p2(80,80),p3(80,60),p4(120,80),p5(120,60),p6(160,40);
std::vector<Point> pts;
pts.push_back(p1);
pts.push_back(p2);
pts.push_back(p3);
pts.push_back(p4);
pts.push_back(p5);
pts.push_back(p6);
polylines(canvas, pts, true, Scalar(200, 0, 0), 5, 8, 0);
fillPoly(canvas, pts, Scalar(200, 0, 0), 8, 0);
imshow("000",canvas);
}
3.drawContours 绘制轮廓轮廓/填充轮廓
共9个参数,这里我们只介绍前5个(剩下的有缺省值)
第1个参数 输入
第2个参数 多边形轮廓的数组
第3个参数 选择的多边形轮廓(在数组中的编号,-1为全选)
第4个参数 多边形颜色
第5个参数 填充/绘制(-1为填充)
示例代码 大容器放小的
void QuickDemo::polyline_drawing_demo() {
Mat canvas = Mat::zeros(Size(256, 256), CV_8UC3);
Point p1(40,40),p2(80,80),p3(80,60),p4(120,80),p5(120,60),p6(160,40);
std::vector<Point> pts;
pts.push_back(p1);
pts.push_back(p2);
pts.push_back(p3);
pts.push_back(p4);
pts.push_back(p5);
pts.push_back(p6);
std::vector<std::vector<Point>> contours;
contours.push_back(pts);
drawContours(canvas, contours, -1, Scalar(200, 0, 0), -1);
imshow("000",canvas);
}