- 操作系统: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;