多边形填充与绘制
多边形填充与绘制
绘制
polylines(img, pts, isClosed, color, thickness)
- pts:多边形顶点数组,存放每个多边形的顶点坐标
- isClosed:多边形是否闭合的标志,true表示闭合
- color:多边形颜色,类型为 Scalar
- thickness:多边形边缘线的粗细
填充
drawContours(img, contours, contourIdx, color, thickness)
- contours:将要填充的轮廓,类型为 vector<vector<Point>>
- contourIdx:要填充的轮廓点的数目,提供负值将填充所有轮廓点
- color:填充轮廓的颜色,类型为 Scalar
- thickness:轮廓点的粗细。如果为负数,将绘制轮廓的内部。默认参数为1
实现
示例代码:
#include <opencv2/opencv.hpp>
#include <vector>
using namespace cv;
using namespace std;
int main()
{
Mat3b img = Mat::zeros(Size(512, 512), CV_8UC3);
Point p1(100, 100);
Point p2(350, 100);
Point p3(450, 280);
Point p4(320, 450);
Point p5(80, 400);
vector<Point> pts;
pts.push_back(p1);
pts.push_back(p2);
pts.push_back(p3);
pts.push_back(p4);
pts.push_back(p5);
// 绘制多边形
polylines(img, pts, true, Scalar(0, 0, 255), 2);
imshow("Poly", img);
vector<vector<Point>> contours;
contours.push_back(pts);
// 填充多边形
drawContours(img, contours, -1, Scalar(255, 0, 0), -1);
imshow("fill", img);
waitKey(0);
destroyAllWindows();
return 0;
}
运行结果: