c++ opencv 4.5.1 fillpoly
时间: 2023-09-01 07:03:15 浏览: 185
fillPoly是OpenCV库中的一个函数,用于填充多边形。该函数可以接受多个多边形的顶点坐标数组,并将其填充为指定的颜色。
在使用fillPoly函数之前,首先需要创建一个和图像大小相同的空白画布(可以是灰度图或彩色图)。然后,将多个多边形的顶点坐标存储在一个二维数组中,每个多边形的坐标用一个单独的数组表示。
fillPoly函数的基本语法如下:
```cpp
void fillPoly(InputOutputArray img,
InputArrayOfArrays pts,
const Scalar& color,
int lineType = LINE_8,
int shift = 0,
Point offset = Point() )
```
其中,参数img是要填充的图像,pts是一个包含多个多边形的数组,color是填充的颜色,lineType是线的类型(默认为8邻域连接线),shift是坐标点除以2的移位数,offset是坐标点的偏移量(默认为0,0)。
调用fillPoly函数后,会将指定的多边形填充为指定的颜色,并在原始图像上进行修改。
下面是一个使用fillPoly函数的例子:
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat img = Mat::zeros(400, 400, CV_8UC3); // 创建一个400x400的彩色图像
Point pts[1][4]; // 定义一个四边形的顶点坐标数组
pts[0][0] = Point(50, 50);
pts[0][1] = Point(50, 150);
pts[0][2] = Point(150, 150);
pts[0][3] = Point(150, 50);
const Point* ppt[1] = { pts[0] };
int npt[] = { 4 };
fillPoly(img, ppt, npt, 1, Scalar(255, 0, 0), LINE_8); // 填充四边形为蓝色
imshow("image", img);
waitKey(0);
return 0;
}
```
以上代码创建了一个400x400的彩色图像,然后定义了一个四边形的顶点坐标数组,最后调用fillPoly函数将该四边形填充为蓝色,并显示结果。
阅读全文