[C++] opencv - fillPoly(填充多边形)函数介绍和使用场景

这篇具有很好参考价值的文章主要介绍了[C++] opencv - fillPoly(填充多边形)函数介绍和使用场景。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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;
}

cv::fillpoly,C++,opencv,c++,opencv

绘制实心矩形

#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;
}

 cv::fillpoly,C++,opencv,c++,opencv

绘制实心多边形

#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;
}

cv::fillpoly,C++,opencv,c++,opencv

结论

fillPoly()函数是OpenCV中用于绘制填充多边形的函数。可以用来绘制实心三角形,实心矩形,实心多边形等。文章来源地址https://www.toymoban.com/news/detail-827526.html

到了这里,关于[C++] opencv - fillPoly(填充多边形)函数介绍和使用场景的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Opencv(C++)笔记--绘制直线、矩形、椭圆、圆、填充多边形、绘制字体和随机产生坐标点

    目录 1--cv::line()绘制直线 2--cv::Rect()绘制矩形 3--cv::ellipse()绘制椭圆 4--cv::circle()绘制圆 5--cv::fillPoly()填充多边形 6--cv::putText()绘制字体 6--cv::RNG随机产生坐标点 使用 cv::Point p1 定义坐标点; 使用 cv::line() 绘制直线,传入的参数依次为:背景图、两个点的坐标、直线的颜色、直线

    2024年02月14日
    浏览(38)
  • 计算机图形学 第4章 多边形填充

    了解扫描转换的基本概念。 熟练掌握多边形有效边表填充算法。 掌握多边形边缘填充算法。 熟练掌握区域四邻接点和八邻接点区域填充算法。 掌握区域扫描线种子填充算法。 无论使用哪种着色模式,都意味着要使用指定颜色为多边形 边界内 的每一个像素着色。 多边形的

    2024年02月02日
    浏览(34)
  • 【计算机图形学 】扫描线多边形填充算法 | OpenGL+鼠标交互

    传送门 实现多边形扫描线填充算法,并和鼠标进行交互。 具体原理略过,会贴上完整代码,可直接运行。 环境: vs2019,OpenGL的库(可以搜索如何用vs使用OpenGL的库,可以使用vs自带的插件或者其他方法,很方便) 要点: 1.NET和AET的创建,改动 2.改变鼠标点击和鼠标拖拽的响应

    2023年04月08日
    浏览(39)
  • 计算机图形学实验——利用MFC对话框实现多边形绘制与填充(扫描线填充算法)附源码

    内容概括: 利用基于对话框的MFC项目 实现鼠标点击绘制多边形 实现扫描线算法填充多边形 源码见Yushan-Ji/ComputerGraphics: ECNU2023秋 计算机图形学课程实验代码 (github.com) 通过鼠标交互输入多边形 对各种多边形进行填充,包括边界自交的情况 利用 OnLButtonDown 和 OnRButtonDown 函数,

    2024年02月04日
    浏览(43)
  • opencv 之 外接多边形(矩形、圆、三角形、椭圆、多边形)使用详解

    本文主要讲述opencv中的外接多边形的使用: 多边形近似 外接矩形、最小外接矩形 最小外接圆 外接三角形 椭圆拟合 凸包 将重点讲述最小外接矩形的使用 给一个opencv官方的例程: 过程图像如下: 椭圆拟合一般用于轮廓提取之后: 凸包绘制 计算两个旋转矩形交集: C++版的最

    2024年02月09日
    浏览(50)
  • 基于C++ 的OpenCV绘制多边形,多边形多条边用不用的颜色绘制

    使用基于C++的OpenCV库来绘制多边形,并且为多边形的不同边使用不同的颜色,可以按照以下步骤进行操作: 首先,确保你已经安装了OpenCV库并配置好了你的开发环境。 导入必要的头文件: 创建一个空白的图像,然后绘制多边形,并为每条边选择不同的颜色: 在这个示例中,

    2024年02月13日
    浏览(28)
  • opencv 判断点在多边形内外

            基于Python 和 OpenCV 画出多边形,以及判断某个点是不是在多边形内。         函数定义:cv2.pointPolygonTest(contour, pt, measureDist)         函数功能:找到图像里的点和轮廓之间的最短距离. 它返回的距离当点在轮廓外的时候是负值,当点在轮廓内是正值,如果

    2024年02月12日
    浏览(34)
  • Python:opencv画点、圆、线、多边形、矩形

    简介 :机器学习视觉方向一般都需要在图像中添加标注框,标注框有着很大的用处,特别是对图像中某些需要关注的特征起到圈定的效果,方便对特征选择进行处理。 相关攻略: 机器学习:基本流程 Python:调用摄像头使用cv2库录制视频 Python:视频拆分成一帧一帧的图片

    2024年02月04日
    浏览(63)
  • python opencv 绘制矩形、圆、线、多边形

    👨‍💻 个人简介: 深度学习图像领域工作者 🎉 总结链接:              链接中主要是个人工作的总结,每个链接都是一些常用demo,代码直接复制运行即可。包括:                     📌 1.工作中常用深度学习脚本                     📌 2.to

    2024年02月03日
    浏览(42)
  • Android OpenCV(三十七):轮廓外接多边形

    参数四:closed,逼近曲线是否闭合的标志,true表示封闭,false,表示不封闭。 该方法使用的是 Douglas-Peucker algorithm(道格拉斯-普克算法) 。 Douglas-Peukcer算法 由D.Douglas和T.Peueker于1973年提出,也称为 拉默-道格拉斯-普克算法 、 迭代适应点算法 、 分裂与合并算法 、 D-P算法

    2024年04月13日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包