千家信息网

C++ OpenCV如何实现凸包检测

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要介绍C++ OpenCV如何实现凸包检测,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!凸包凸包指如果在集合A内连接任意两个点的直线段都在A的内部,则称集合A是凸形的
千家信息网最后更新 2025年01月23日C++ OpenCV如何实现凸包检测

这篇文章主要介绍C++ OpenCV如何实现凸包检测,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

凸包

凸包指如果在集合A内连接任意两个点的直线段都在A的内部,则称集合A是凸形的。简单点理解,就是一个多边型,没有凹的地方。凸包(凸壳)能包含点集中所有的点,凸包检测常应用在物体识别、手势识别及边界检测等领域。

一个轮廓可以有无数个包围它的外壳,而其中表面积最小的一个外壳,就是凸包。

相关API

OpenCV中提供了函数convexHull()用于对物体轮廓凸包进行检测,对形状的凸包缺陷分析时使用

void convexHull( InputArray points, OutputArray hull, bool clockwise = false, bool returnPoints = true );

  • points:输入二维点集(一般为轮廓点集),这些点集被存储在容器vector或Mat中,在下面的源码中,我是强制转化为了Mat类型。

  • hull:凸包点集输出。类型要么为整型向量,要么为点集向量,如果是整型向量,那么存储的只是索引,索引的对象是输入二维点集(如果不懂这句话的意思,看一遍下面给出的源码就清楚了)。

  • clockwise:凸包方向的标志位。如果是true,那么是基于顺时针方向,如果是false,那么是基于反时针方向。

  • returnPoints: 表示返回点个数,如果第二个参数是vector则自动忽略

代码演示

实现步骤

  1. 图像从RGB转换为灰度图

  2. 灰度图转为二值图像

  3. 通过发现轮廓得到候选点

  4. 凸包API调 用

  5. 绘制显示

新建一个项目opencv-0024,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法

凸包的处理代码

下面是显示效果

我们再换几个图像试试看看效果

以上是"C++ OpenCV如何实现凸包检测"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

凸包 检测 轮廓 向量 图像 方向 C++ 代码 内容 外壳 就是 属性 效果 时针 源码 灰度 物体 篇文章 类型 索引 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 为什么快手发私信显示服务器繁忙 环京通勤人员数据库怎样建立的 食品数据库查询可以用来查什么 三线城市从事软件开发何去何从 数据库清除数据不删表 车载网络技术实训报告总结 江苏互联网络技术服务信息 网络技术支持所包含的内容 网络安全的目的包括哪些 网络技术人才市场需求分析 数据存储服务器和云存储服务器 网络安全与法学双学士学位 数据库池如何连接数据库 mysql每天备份数据库 应聘软件开发怎么填写 关于法治的案例网络安全素材 哪里培训软件开发好 hpe高密度服务器价格 维护网络安全工作规范 公共目录服务器IP地址 福建网络安全朝阳行业 银行网络技术人员演讲稿 达梦数据库查看集群 博兴财务库存软件开发 网络安全员培训 考核制度 中兴服务器5300-g4开关 合肥软件开发驻场正规平台 桂阳软件开发培训学校 数据库数据结构化 安态网络安全
0