[C++] opencv - fillPoly(填充多边形)函数介绍和使用场景
创始人
2024-11-10 19:42:38
0

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中用于绘制填充多边形的函数。可以用来绘制实心三角形,实心矩形,实心多边形等。

相关内容

热门资讯

2分钟发现!六瓣数字消辅助,扑... 2分钟发现!六瓣数字消辅助,扑克时间其实真的是有挂,可靠教程(有挂插件)1、让任何用户在无需六瓣数字...
玩家攻略推荐!青龙大厅外 挂是... 玩家攻略推荐!青龙大厅外 挂是真的吗(透明挂)透视辅助器(2025已更新)(哔哩哔哩);1、不需要A...
玩家必看科普!广东老友麻将神器... 玩家必看科普!广东老友麻将神器(辅助)一直是有挂(2021已更新)(哔哩哔哩);1、完成广东老友麻将...
3分钟辅助!白金岛字牌辅助,p... 3分钟辅助!白金岛字牌辅助,poker world都是有挂,新版2025教程(有挂插件);1、超多福...
教程攻略!欢乐达人十三水有没有... 教程攻略!欢乐达人十三水有没有外 挂(辅助挂)透明挂透视辅助脚本(2021已更新)(哔哩哔哩);1、...
一分钟揭秘!全民雀神有没有挂(... 一分钟揭秘!全民雀神有没有挂(透视)好像存在有挂(2025已更新)(哔哩哔哩)1、操作简单,无需注册...
重大通报!!吉祥联盟有没有外 ... 重大通报!!吉祥联盟有没有外 挂(透明挂)透视辅助软件(2021已更新)(哔哩哔哩)1、吉祥联盟有没...
五分钟发现!优乐麻将挂,AAp... 五分钟发现!优乐麻将挂,AApOKER确实有挂,攻略教程(有挂ai代打)1、这是跨平台的优乐麻将挂黑...
一秒答解!中至小程序有挂吗(透... 一秒答解!中至小程序有挂吗(透明挂)其实有挂(2020已更新)(哔哩哔哩);1、许多玩家不知道中至小...
记者发布!科乐麻将摸宝神器(透... 记者发布!科乐麻将摸宝神器(透视)透视辅助app(2024已更新)(哔哩哔哩)1)科乐麻将摸宝神器辅...