目录
1 概念讲解及用处
在OpenCV中,绘制多边形可以通过cv::polylines函数来实现。该函数用于在图像上绘制连接多个点的折线段,可以选择线条颜色和线宽。绘制多边形在计算机视觉中被广泛应用,例如图像分割、轮廓检测、形状匹配等领域。
2 函数详解
void polylines(Mat& img, const Point* pts, const int* npts, int ncontours, bool isClosed, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0)
参数说明:
img:目标图像,绘制的多边形将在该图像上进行。
pts:一个指向Point类型数组的指针,包含多个点的坐标。
npts:一个整数数组,表示每个多边形的点数。
ncontours:多边形的数量。
isClosed:是否闭合多边形,为真表示闭合,为假表示不闭合。
color:线条颜色,使用cv::Scalar表示。
thickness:线条宽度,默认值为1。
lineType:线条类型,默认为8-connected(LINE_8),也可以选择4-connected(LINE_4)。
shift:坐标点的小数位数精度。
3 原理
多边形由连接多个点的线段组成。通过给定的顶点坐标,可以绘制出多边形的形状。
4 用C++编写代码进行实现
下面是一个使用OpenCV的C++代码示例,用于在图像上绘制一个绿色填充的三角形:
#include <opencv2/opencv.hpp>
using namespace cv;
int main(){
Mat image(500, 500, CV_8UC3, Scalar(0, 0, 0)); // 创建一个黑色背景图像
Point pts[3]; // 三角形的三个顶点坐标
pts[0] = Point(100, 400);
pts[1] = Point(250, 100);
pts[2] = Point(400, 400);
Scalar color(0, 255, 0); // 颜色 (BGR格式,绿色)
const Point* ppt[1] = {pts};
int npt[] = {3};
fillPoly(image, ppt, npt, 1, color, LINE_8); // 绘制一个绿色填充的三角形
imshow("Polygon", image);
waitKey(0);
return 0;
}
以上代码创建了一个500x500的黑色背景图像,在图像上绘制了一个由三个顶点坐标(100, 400)、(250, 100)、(400, 400)组成的绿色填充的三角形。polylines函数的最后一个参数指定了线条类型为8-connected(LINE_8)。