- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
算法描述
填充一个凸多边形。
函数 cv::fillConvexPoly 绘制一个填充的凸多边形。这个函数比 fillPoly 函数快得多。它可以填充的不仅仅是凸多边形,还可以填充任何没有自相交的单调多边形,即,一个轮廓最多与每一条水平线(扫描线)相交两次的多边形(虽然它的最顶部和/或最底部边缘可能是水平的)。
函数原型1
void cv::fillConvexPoly
(InputOutputArray img,InputArray points,const Scalar & color,int lineType = LINE_8,int shift = 0
)
参数1
- 参数img 图像.
- 参数points 多边形顶点的向量。
- 参数color 用于填充多边形的颜色。
- 参数lineType 边界的类型. 参见 LineTypes
- 参数shift 顶点坐标中的分数位数
函数原型2
这是重载的成员函数,为方便提供。它与上面的函数仅在所接受的参数方面有所不同。
void cv::fillConvexPoly
(InputOutputArray img,const Point * pts,int npts,const Scalar & color,int lineType = LINE_8,int shift = 0
)
参数2
- 参数img 图像.
- 参数pts 多边形顶点的向量。
- 参数npts 点的个数
- 参数color 用于填充多边形的颜色。
- 参数lineType 边界的类型. 参见 LineTypes
- 参数shift 顶点坐标中的分数位数
代码示例
#include <opencv2/opencv.hpp>
#include <iostream>int main()
{// 创建一个空白图像cv::Mat image = cv::Mat::zeros(400, 400, CV_8UC3);// 设置多边形的顶点std::vector<cv::Point> points;points.push_back(cv::Point(100, 100));points.push_back(cv::Point(150, 50));points.push_back(cv::Point(200, 100));points.push_back(cv::Point(200, 200));points.push_back(cv::Point(150, 250));points.push_back(cv::Point(100, 200));// 设置填充颜色cv::Scalar color(0, 0, 255); // 红色 (BGR)// 填充凸多边形cv::fillConvexPoly(image, points, color);// 显示图像cv::namedWindow("Convex Polygon Filling", cv::WINDOW_NORMAL);cv::imshow("Convex Polygon Filling", image);cv::waitKey(0);return 0;