opencv基础篇 ——(十六)图形绘制与填充

        OpenCV 提供了丰富的图形绘制和填充功能,主要通过 cv::rectanglecv::circlecv::linecv::polylinescv::fillPoly 和 cv::ellipse 等函数实现。以下是一些基本的图形绘制和填充操作的说明:

  1. 矩形:

    • 函数: cv::rectangle
    • 语法: cv::rectangle(img, rect, color, thickness, lineType, shift)
    • 参数:
      • img: 目标图像。
      • rectcv::Rect 类型的对象,定义矩形的左上角和右下角坐标。
      • color: 矩形的颜色,如 cv::Scalar(255, 0, 0) 代表红色。
      • thickness: 线条的宽度,如果为负值,表示填充矩形。
      • lineType: 线型,如 cv::LINE_8(8-连接线)或 cv::LINE_AA(抗锯齿线)。
      • shift: 位移量,用于指定坐标的小数部分。
  2. :

    • 函数: cv::circle
    • 语法: cv::circle(img, center, radius, color, thickness, lineType, shift)
    • 参数与 cv::rectangle 类似,但 rect 替换为圆心 (center) 和半径 radius
  3. 线:

    • 函数: cv::line
    • 语法: cv::line(img, pt1, pt2, color, thickness, lineType, shift)
    • 参数:
      • pt1 和 pt2: 定义线的两个端点。
      • 其他参数与 cv::rectangle 相同。
  4. 多边形:

    • 函数: cv::polylines 和 cv::fillPoly
    • cv::polylines 用于绘制未闭合的多边形线条,cv::fillPoly 用于填充多边形。
    • 语法: cv::polylines(img, points, isClosed, color, thickness, lineType, shift, connectType)
    • 参数:
      • points: 一个包含多边形顶点的 std::vector<std::vector<cv::Point>>
      • isClosed: 如果 true,多边形被视为闭合的,可以用于填充。
      • 其他参数与 cv::line 类似。
  5. 椭圆:

    • 函数: cv::ellipse
    • 语法: cv::ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness, lineType, shift)
    • 参数:
      • center: 椭圆中心。
      • axescv::Size 类型,定义椭圆的主轴长度。
      • angle: 主轴相对于水平轴的角度。
      • startAngle 和 endAngle: 指定椭圆弧的起始和结束角度(以度为单位)。
      • 其他参数与 cv::rectangle 相似。
  6. 凸多边形:

    • 函数: cv::fillConvexPoly
    • cv::fillConvexPoly中用于填充凸多边形的一个函数
    • 语法:fillConvexPoly(InputOutputArray img, InputArray points, const Scalar& color, int lineType = LINE_8,int shift = 0);
    • 参数:
      • pts: 指向凸多边形顶点坐标的指针。顶点顺序需按照顺时针或逆时针方向排列。
      • npts: 多边形顶点的数量。
      • color: 填充颜色,类型为 cv::Scalar,例如 cv::Scalar(colorB, colorG, colorR),分别代表 BGR 通道的值。
      • lineType: 可选参数,定义边界线的类型,默认为 cv::LINE_8,表示 8 连接线。
      • shift: 可选参数,点坐标中小数点的位置,一般情况下设为 0。

这些函数都直接修改输入图像 img,因此在绘制前要确保图像有足够的通道(例如,CV_8UC3 表示一个 8 位、3 通道的彩色图像)。同时,颜色 color 可以是 RGB 三元组,也可以是灰度值。

效果展示:

  • 凸多边形填充

  • 多边形绘制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/671601.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

node.js对数据库的操作 之 query(查询)与pool(连接池)

一、Query&#xff08;查询&#xff09; &#xff08;1&#xff09;意义 query是指向数据库发送的一个命令或请求&#xff0c;以检索、更新、插入或删除数据。它是一个具体的SQL语句或NoSQL命令&#xff0c;用于从数据库中获取或修改数据。 &#xff08;2&#xff09;用途 …

OpenHarmony实战开发-管理位置权限

Web组件提供位置权限管理能力。开发者可以通过onGeolocationShow()接口对某个网站进行位置权限管理。Web组件根据接口响应结果&#xff0c;决定是否赋予前端页面权限。获取设备位置&#xff0c;需要开发者配置ohos.permission.LOCATION&#xff0c;ohos.permission.APPROXIMATE…

数据库中索引的底层原理和SQL优化

文章目录 关于索引B 树的特点MySQL 为什么使用 B 树&#xff1f; 索引分类聚簇索引 和 非聚簇索引覆盖索引索引的最左匹配原则索引与NULL索引的代价大表结构修改 SQL优化EXPLAIN命令选择索引列其它细节 关于索引 索引是一种用来加快查找效率的数据结构&#xff0c;可以简单粗暴…

MATLAB 变换

MATLAB 变换&#xff08;Transforms&#xff09; MATLAB提供了用于处理诸如Laplace和Fourier变换之类的变换的命令。转换在科学和工程中用作简化分析和从另一个角度查看数据的工具。 例如&#xff0c;傅立叶变换允许我们将表示为时间函数的信号转换为频率函数。拉普拉斯变换使…

Day61:单调栈 739. 每日温度 496.下一个更大元素 I

739. 每日温度 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 示例 1: 输…

从线索到成交:HubSpot全渠道销售流程的精准打磨

在当今数字化时代&#xff0c;企业面临着越来越复杂的市场环境和激烈的竞争压力。在这样的背景下&#xff0c;如何利用科技手段提升营销和销售效率&#xff0c;拓展客户获客渠道&#xff0c;成为了企业发展的关键之道。作为HubSpot合作伙伴&#xff0c;我们深谙全渠道营销与销售…

数据库管理-第180期 23ai: Cloud/Container Plus AI(20240503)

数据库管理180期 2024-05-03 数据库管理-第180期 23ai: Cloud/Container Plus AI&#xff08;20240503&#xff09;1 Free版本更新2 如我所期3 宣传图Oracle Vector DBJSON Relational DualityProperty GraphsShardingTrue CacheFirewall 总结 数据库管理-第180期 23ai: Cloud/…

Ps 中 曲线和色阶的区别在哪里?

【官方解释】 在Photoshop中&#xff0c;曲线&#xff08;Curves&#xff09;和色阶&#xff08;Levels&#xff09;是两种调整图像色调和对比度的工具&#xff0c;它们有一些相似之处&#xff0c;但也有一些重要的区别。 调整方式: 曲线&#xff08;Curves&#xff09;&…

【Linux】掌握Linux系统编程中的权限与访问控制

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

利用matplotlib和networkx绘制有向图[显示边的权重]

使用Python中的matplotlib和networkx库来绘制一个有向图&#xff0c;并显示边的权重标签。 1. 定义了节点和边&#xff1a;节点是一个包含5个节点的列表&#xff0c;边是一个包含各个边以及它们的权重的列表。 2. 创建了一个有向图对象 G。 3. 向图中添加节点和边。 4. 设置了…

软件测试产品交付包括哪些内容?

软件测试产品交付通常会包括以下内容: 1. 测试计划:详细的测试方案、测试范围、测试资源与时间安排等内容。 2. 测试用例:包括功能测试用例、性能测试用例、安全测试用例等各类测试用例。 3. 测试环境:包括硬件环境、软件环境、网络环境、数据环境等测试所需要的各种环境。 4. …

CSS悬浮动画

<button class"btn">悬浮动画</button>.btn {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);padding: 10px 20px;width: 200px;height: 50px;background-color: transparent;border-radius: 5px;border: 2px solid powderblu…