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 <opencv2/opencv.hpp>
#include <iostream>
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 <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>
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<Point> 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 <opencv2/opencv.hpp>
#include <iostream>
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<Point> 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;
}
文章来源:https://www.toymoban.com/news/detail-827526.html
结论
fillPoly()
函数是OpenCV中用于绘制填充多边形的函数。可以用来绘制实心三角形,实心矩形,实心多边形等。文章来源地址https://www.toymoban.com/news/detail-827526.html
到了这里,关于[C++] opencv - fillPoly(填充多边形)函数介绍和使用场景的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!