fillPoly函数介绍

fillPoly()函数是OpenCV中用于绘制填充多边形的函数。函数原型如下:

/** @brief Fills the area bounded by one or more polygons.

The function cv::fillPoly fills an area bounded by several polygonal contours. The function can fill

complex areas, for example, areas with holes, contours with self-intersections (some of their

parts), and so forth.

@param img Image.

@param pts Array of polygons where each polygon is represented as an array of points.

@param color Polygon color.

@param lineType Type of the polygon boundaries. See #LineTypes

@param shift Number of fractional bits in the vertex coordinates.

@param offset Optional offset of all points of the contours.

*/

CV_EXPORTS_W void fillPoly(InputOutputArray img, InputArrayOfArrays pts,

const Scalar& color, int lineType = LINE_8, int shift = 0,

Point offset = Point() );

/** @overload */

CV_EXPORTS void fillPoly(InputOutputArray img, const Point** pts,

const int* npts, int ncontours,

const Scalar& color, int lineType = LINE_8, int shift = 0,

Point offset = Point() );

函数参数说明如下:

img:输入图像。

pts:多边形数组,其中每个多边形由点数组表示。

color:多边形的颜色。

lineType:多边形边界的类型。参见#LineTypes。

shift:顶点坐标中的分数位数。

offset:轮廓的所有点的可选偏移量。

此外,还提供了一个重载版本的fillPoly函数,它接受一个const Point**类型的pts参数,以及一个const int*类型的npts参数和一个表示轮廓数量的整数ncontours。

使用场景

fillPoly()函数适用于需要绘制填充多边形的场景,例如在图像上绘制一个封闭的图形、制作一个简单的遮罩等。

使用案例

绘制实心三角形

#include

#include

using namespace cv;

using namespace std;

int main()

{

// 创建一个黑色背景的图像

Mat img = Mat::zeros(300, 300, CV_8UC3);

// 定义三角形三个顶点的坐标

Point points[1][3];

points[0][0] = Point(50, 50);

points[0][1] = Point(150, 200);

points[0][2] = Point(200, 50);

// 定义三角形的颜色

Scalar color(0, 255, 0);

// 将三角形的顶点坐标存储到数组中

const Point* ppts[1] = {points[0]};

const int npts[] = {3};

// 在图像上绘制实心三角形

fillPoly(img, ppts, npts, 1, color);

// 显示结果

imshow("实心三角形", img);

waitKey(0);

return 0;

}

绘制实心矩形

#include

#include

#include

#include

using namespace cv;

using namespace std;

int main()

{

// 创建一个空白图像

Mat image = Mat::zeros(400, 400, CV_8UC3);

// 定义矩形的顶点

Point pts[4];

pts[0] = Point(50, 50);

pts[1] = Point(200, 50);

pts[2] = Point(200, 200);

pts[3] = Point(50, 200);

// 将顶点放入一个vector中

vector poly;

for (int i = 0; i < 4; i++)

{

poly.push_back(pts[i]);

}

// 填充矩形

fillPoly(image, poly, Scalar(255, 0, 0));

// 显示图像

imshow("实心矩形", image);

waitKey(0);

return 0;

}

 

绘制实心多边形

#include

#include

using namespace cv;

using namespace std;

int main()

{

// 创建一个空白图像

Mat image = Mat::zeros(512, 512, CV_8UC3);

// 定义矩形的顶点

Point pts[5];

pts[0] = Point(100, 100);

pts[1] = Point(300, 150);

pts[2] = Point(300, 350);

pts[3] = Point(250, 450);

pts[4] = Point(50, 450);

// 将顶点放入一个vector中

vector poly;

for (int i = 0; i < 5; i++)

{

poly.push_back(pts[i]);

}

// 填充多边形

fillPoly(image, poly, Scalar(255, 0, 0));

// 显示图像

imshow("实心多边形", image);

waitKey(0);

return 0;

}

结论

fillPoly()函数是OpenCV中用于绘制填充多边形的函数。可以用来绘制实心三角形,实心矩形,实心多边形等。

好文阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: