polylines函数介绍
C++ OpenCV中的polylines函数用于在图像上绘制多边形。它函数原型如下:
/** @brief Draws several polygonal curves.
@param img Image.
@param pts Array of polygonal curves.
@param isClosed Flag indicating whether the drawn polylines are closed or not. If they are closed,
the function draws a line from the last vertex of each curve to its first vertex.
@param color Polyline color.
@param thickness Thickness of the polyline edges.
@param lineType Type of the line segments. See #LineTypes
@param shift Number of fractional bits in the vertex coordinates.
The function cv::polylines draws one or more polygonal curves.
*/
void polylines(InputOutputArray img, InputArrayOfArrays pts,
bool isClosed, const Scalar& color,
int thickness = 1, int lineType = LINE_8, int shift = 0 );
/** @overload */
void polylines(InputOutputArray img, const Point* const* pts, const int* npts,
int ncontours, bool isClosed, const Scalar& color,
int thickness = 1, int lineType = LINE_8, int shift = 0 );
函数的参数如下:
img:要绘制折线的图像。
pts:一个包含多条折线顶点坐标的数组。
isClosed:一个布尔值,表示绘制的折线是否闭合。如果为true,则从每条折线的最后一个顶点到第一个顶点绘制一条线段。
color:折线的颜色。
thickness:折线边缘的粗细,默认值为1。如果为负数,则对绘制的多边形进行内部填充。
lineType:线段类型,参见#LineTypes。
shift:顶点坐标中的小数位数,默认值为0。
函数首先检查输入参数的有效性,然后根据pts的类型调用不同的重载版本的polylines函数进行绘制。
使用场景
- 图像处理:在图像上绘制特定形状,如多边形、矩形等。
- 计算机视觉:识别和跟踪物体,如车辆、行人等。
- 游戏开发:在游戏中绘制图形元素,如角色、道具等。
使用案例
绘制空心矩形
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 创建一个空白图像
Mat img = Mat::zeros(400, 400, CV_8UC3);
// 定义多边形的顶点坐标
vector<Point> pts;
pts.push_back(Point(50, 50));
pts.push_back(Point(200, 50));
pts.push_back(Point(200, 200));
pts.push_back(Point(50, 200));
// 绘制多边形
polylines(img, pts, true, Scalar(0, 255, 0), 2, LINE_4);
// 显示图像
imshow("Polygon", img);
waitKey(0);
return 0;
}
总结
C++ OpenCV中的polylines函数可以方便地在图像上绘制多边形,适用于各种图像处理和计算机视觉任务。通过调整函数参数,可以实现不同颜色、粗细、闭合方式的多边形绘制。