OpenCV绘图函数(9)填充多边形函数fillPoly()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

填充一个或多个多边形轮廓所包围的区域。
函数 cv::fillPoly 填充由若干个多边形轮廓所包围的区域。该函数可以填充复杂的区域,例如带有洞的区域、自身相交的轮廓(某些部分)等等。

函数原型1


void cv::fillPoly
(
	InputOutputArray 	img,
	InputArrayOfArrays 	pts,
	const Scalar & 	color,
	int 	lineType = LINE_8,
	int 	shift = 0,
	Point 	offset = Point() 
)		

参数1

  • 参数img 图像.
  • 参数pts 多边形数组,其中每个多边形由一系列点表示。
  • 参数color 多边形的颜色。
  • 参数lineType 多边形边界的类型。参见 LineTypes
  • 参数shift 顶点坐标中的分数位数。
  • 参数offset 多边形轮廓所有点的可选偏移量。

函数原型2


void cv::fillPoly
(
	InputOutputArray 	img,
	const Point ** 	pts,
	const int * 	npts,
	int 	ncontours,
	const Scalar & 	color,
	int 	lineType = LINE_8,
	int 	shift = 0,
	Point 	offset = Point() 
)		

参数2

参数img 图像.

  • 参数pts 多边形数组,其中每个多边形由一系列点表示。
  • 参数npts 点的个数
  • 参数ncontours 轮廓的个数
  • 参数color 多边形的颜色。
  • 参数lineType 多边形边界的类型。参见 LineTypes
  • 参数shift 顶点坐标中的分数位数。
  • 参数offset 多边形轮廓所有点的可选偏移量。

代码示例


#include <opencv2/opencv.hpp>
#include <iostream>

int main()
{
    // 创建一个空白图像
    cv::Mat image = cv::Mat::zeros(400, 400, CV_8UC3);

    // 设置多边形的顶点
    std::vector<std::vector<cv::Point>> polygons;
    std::vector<cv::Point> polygon;
    polygon.push_back(cv::Point(100, 100));
    polygon.push_back(cv::Point(200, 100));
    polygon.push_back(cv::Point(250, 150));
    polygon.push_back(cv::Point(200, 200));
    polygon.push_back(cv::Point(150, 250));
    polygon.push_back(cv::Point(100, 200));
    polygon.push_back(cv::Point(50, 150));
    polygon.push_back(cv::Point(100, 175)); // 添加一个额外的顶点以形成凹陷
    polygons.push_back(polygon);

    // 设置填充颜色
    cv::Scalar color(0, 0, 255); // 红色 (BGR)

    // 填充多边形
    cv::fillPoly(image, polygons, color);

    // 显示图像
    cv::namedWindow("Polygon Filling", cv::WINDOW_NORMAL);
    cv::imshow("Polygon Filling", image);
    cv::waitKey(0);

    return 0;
}

运行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值