OpenCV(cv::drawContours())

news/2024/9/17 15:12:02/文章来源:https://www.cnblogs.com/keye/p/18410200

目录
  • 1. 函数原型
  • 2. 示例



1. 函数原型

cv::drawContours() 用于在图像上绘制轮廓。函数原型:

void cv::drawContours(cv::InputOutputArray       image,const std::vector<std::vector<cv::Point>>& contours,int                        contourIdx,const cv::Scalar&          color,int                        thickness = 1,int                        lineType = 8,const cv::Mat&             hierarchy = cv::Mat(),int                        maxLevel = INT_MAX,cv::Point                  offset = cv::Point()
);

参数:

  • image: 输入输出图像,在其上绘制轮廓。
  • contours: 轮廓的集合,每个轮廓是一个点的向量。轮廓通常由 cv::findContours() 函数生成。每个轮廓是一个 std::vector<cv::Point> 对象,包含了一系列按顺序排列的点。
  • contourIdx: 该参数指定绘制哪个轮廓。
    • 取值 -1 表示绘制所有轮廓。
    • 非负值指定绘制特定索引的轮廓。
  • color: 绘制轮廓的颜色,类型是 cv::Scalar
    • 对于彩色图像,cv::Scalar(0, 255, 0) 表示绿色。
    • 对于灰度图像,cv::Scalar(255) 表示白色(轮廓)。
  • thickness: 轮廓线的厚度。
    • 取值:正整数,表示轮廓线的宽度。当为 -1cv::FILLED 表示填充轮廓内部区域。
  • lineType: 线条类型,指定绘制轮廓线的连接方式。
    • 8:8-connectivity(默认),连通性为8。
    • 4:4-connectivity,连通性为4。
    • CV_AA:抗锯齿线条(Anti-Aliasing),更平滑的线条,但计算更复杂。
  • hierarchy: 轮廓的层次结构矩阵(可选)。类型是 cv::Mat,通常由 cv::findContours() 函数返回。
  • maxLevel: 绘制的最大层级(可选)。
    • 取值:整数,INT_MAX 表示绘制所有层级的轮廓。
  • offset: 对绘制轮廓的坐标进行偏移(可选)。类型是 cv::Point,用于将所有轮廓点的坐标偏移到指定位置,通常用于处理多个图像拼接的情况。


2. 示例

cv::Mat img = cv::imread("image.jpg");
std::vector<std::vector<cv::Point>> contours;
cv::findContours(img, contours, cv::RETR_TREE, cv::CHAIN_APPROX_SIMPLE);
cv::drawContours(img, contours, -1, cv::Scalar(0, 255, 0), 2);
cv::imshow("Contours", img);
cv::waitKey(0);

在这个示例中,我们先找到轮廓,然后用绿色(cv::Scalar(0, 255, 0))和线宽为2绘制所有轮廓。



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

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

相关文章

通过LiveGBS实现安防监控摄像头GB28181转成WebRTC流实现web浏览器网页无插件低延迟直播

@目录1、WebRTC超低延时直播2、WebRTC延时对比3、LiveGBS的低延时的WebRTC流4、分屏页面如何选择默认播放流5、无法播放Webrtc6、搭建GB28181视频直播平台 1、WebRTC超低延时直播 需要低延时的视频流监控播放,之前可以用rtmp的低延时播放(1秒左右),随着浏览器对rtmp的禁用,…

MUR3040CT-ASEMI快恢复二极管MUR3040CT

MUR3040CT-ASEMI快恢复二极管MUR3040CT编辑:ll MUR3040CT-ASEMI快恢复二极管MUR3040CT 型号:MUR3040CT 品牌:ASEMI 封装:TO-220AB 安装方式:插件 批号:最新 恢复时间:35ns 最大平均正向电流(IF):30A 最大循环峰值反向电压(VRRM):400V 最大正向电压(VF):0.95V~1…

Ros2 - Moveit2 - Grasps(抓握)

MoveIt Grasps 是一款用于抓取块或圆柱体等物体的抓取生成器,可用作 MoveIt 拾取和放置管道的替代品。MoveIt Grasps 提供基于可达性和接近、抬起和后退运动的笛卡尔规划来过滤抓取的功能。 抓握生成算法基于简单的长方体形状,不考虑摩擦锥或其他抓握动力。 MoveIt Grasps 可…

pbootcms模板后台登录页面在哪里修改

在PBootCMS中,如果你想修改后台登录页面的内容,比如文字和链接,可以通过编辑相应的HTML文件来实现。以下是具体的步骤: 修改后台登录页面备份文件:在修改任何文件之前,务必先备份相关文件,以防万一操作失误可以恢复。找到登录页面文件:打开你的PBootCMS安装目录,找到a…

一文总览 CES 升级新特性,全面了解云上的资源使用

摘要:使用云监控服务使您全面了解云上的资源使用情况、业务的运行状况,并及时收到异常告警做出反应,保证业务顺畅运行。1. 简介 云监控服务(CES)为用户提供一个针对弹性云服务器、带宽等资源的立体化监控平台,涵盖云基础设施、高阶服务、外网网络质量监控,是基于主机监控…

解读GaussDB(for MySQL) 冷热存储分离实现原理

摘要:GaussDB(for MySQL)冷热存储分离特性,支持用户直接针对Innodb的page进行归档和回迁操作,且无需调整上层业务即可访问冷数据。本文分享自华为云社区《GaussDB(for MySQL)新特性解读:冷热存储分离》,作者:GaussDB 数据库。 技术背景 业务长期运行,但随着时间推移,越…

WTF???

不是哥们,这紫了之后还能再升一遍?哦,喜闻乐见的 plagiarism 事件啊,那没事了

算法与数据结构——二分查找插入点

二分查找插入点 二分查找不仅可用于搜索目标元素,还可以解决许多变种问题,比如搜索目标元素的插入位置。 无重复元素情况Question 给定一个长度为n的有序数组nums和一个元素target,数组不存在重复元素。现将target插入数组nums中,并保持其有序性。若数组中已存在元素target…

2022 CSP-J 阅读程序3

1 2022 CSP-J 阅读程序3 阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填 √,错误填;除特 殊说明外,判断题 1.5 分,选择题 3 分) 源代码 #include<iostream>using namespace std;int n,k;int solve1() {int l=0,r=n;while(l<=r){int mid=(l+r)/2;…

第二届熵密杯-广外女生青春版

晨曦初始谜题1 由源码可知,有固定的前缀,且长度为18,超过一个块的长度,可以通过求方程的形式先将key求出来,再将整个key带入解密函数得到加密前的字符串 求key # sage N_HEX = "FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123" N = Integer…

测评通义灵码,如何实现微信表情、 AI 语音笔记等小功能?

墨问西东是一家创业公司,很难一下子配齐像大公司那样的研发团队,这类 AI 编程辅助工具其实在一定程度上帮助我们的研发同学成长为全栈工程师,一个人就能顶上一个团队。内容来源 MacTalk 公众号,作者池建强 墨问西东是一家创业公司,很难一下子配齐像大公司那样的研发团队,…

一文看懂Prometheus告警原理及过程

本文详细介绍了如何在Prometheus中自定义告警规则,包括规则构成、Prometheus配置、告警流程以及告警解除的处理方法,特别关注了告警解除后的通知策略。摘要由CSDN通过智能技术生成目录 1. 自定义告警规则 2. 告警规则编写 3. prometheus配置 4. 告警过程 5. 告警解除 5.1 对s…