当前位置: 首页 > news >正文

OpenCV结构分析与形状描述符(9)检测轮廓相对于其凸包的凹陷缺陷函数convexityDefects()的使用

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

算法描述

查找一个轮廓的凸性缺陷。
下图显示了一个手部轮廓的凸性缺陷:
在这里插入图片描述
convexityDefects 是 OpenCV 库中的一个函数,用于检测轮廓相对于其凸包的凹陷缺陷。这个函数可以帮助识别轮廓中的凹进去的部分,通常被用来分析手部或其他物体的形状特征。

函数原型


void cv::convexityDefects
(InputArray 	contour,InputArray 	convexhull,OutputArray 	convexityDefects 
)		

参数

  • 参数contour 输入的轮廓。
  • 参数convexhull 使用 convexHull 获得的凸包,应包含构成凸包的轮廓点的索引。
  • 参数convexityDefects 凸性缺陷的输出向量。在 C++ 和新的 Python/Java 接口中,每个凸性缺陷表示为一个四元素整数向量(即 Vec4i):(start_index, end_index, farthest_pt_index, fixpt_depth),其中索引是原始轮廓中凸性缺陷起始点、终点和最远点的 0 基础索引,而 fixpt_depth 是最远轮廓点与凸包之间距离的定点近似值(带有 8 位小数部分)。也就是说,要获得深度的浮点数值,需要将 fixpt_depth 除以 256.0。

代码示例


#include <iostream>
#include <opencv2/opencv.hpp>using namespace std;
using namespace cv;int main()
{// 加载一张图像Mat img = imread( "/media/dingxin/data/study/OpenCV/sources/images/hand2.png", IMREAD_GRAYSCALE );if ( img.empty() ){cerr << "Error: Image not found." << endl;return -1;}// 二值化处理Mat binImg;threshold( img, binImg, 48, 255, THRESH_BINARY_INV );//imshow( "er zhi", binImg );// 寻找轮廓vector< vector< Point > > contours;findContours( binImg, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE );// 假设我们只处理第一个最大的轮廓vector< Point > contour = contours[ 0 ];// 计算凸包vector< int > hull;convexHull( contour, hull );// 计算凹陷缺陷vector< Vec4i > defects;convexityDefects( contour, hull, defects );// 在原图上绘制凸包和凹陷缺陷Mat drawing = Mat::zeros( img.size(), CV_8UC3 );drawContours( drawing, contours, 0, Scalar( 255, 0, 0 ), 2 );  // 绘制轮廓//imshow( "Convexity ", drawing );// 绘制凹陷缺陷for ( size_t i = 0; i < defects.size(); i++ ){Vec4i defect   = defects[ i ];Point start    = contour[ defect[ 0 ] ];Point end      = contour[ defect[ 1 ] ];Point farthest = contour[ defect[ 2 ] ];line( drawing, start, end, Scalar( 0, 255, 0 ), 1 );      // 绘制凹陷缺陷的边缘circle( drawing, farthest, 5, Scalar( 0, 0, 255 ), -1 );  // 绘制凹陷缺陷的最远点}// 显示结果imshow( "Original image", img );imshow( "Convexity Defects", drawing );waitKey( 0 );return 0;
}

运行结果

在这里插入图片描述

相关文章:

OpenCV结构分析与形状描述符(9)检测轮廓相对于其凸包的凹陷缺陷函数convexityDefects()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 查找一个轮廓的凸性缺陷。 下图显示了一个手部轮廓的凸性缺陷&#xff1a; convexityDefects 是 OpenCV 库中的一个函数&#xff0c;用于检测轮…...

HTTP 之 响应头信息(二十三)

应答头说明Allow服务器支持哪些请求方法&#xff08;如GET、POST等&#xff09;。Content-Encoding文档的编码&#xff08;Encode&#xff09;方法。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著地减少HTML文档的下载时间。Java的GZIPOutp…...

智能风扇的全新升级:NRK3603语音芯片识别控制模块的应用

在当今智能化生活的潮流中&#xff0c;如何让家电更加人性化、便捷化&#xff0c;已经成为消费者和制造商关注的焦点。在这股大潮中&#xff0c;NRK3603语音识别模块以其出色的性能和广泛的应用&#xff0c;为智能电风扇带来了全新的升级。 1. 芯片特性 NRK3603是一款高性能、…...

如何通过pSLC技术实现性能与容量的双赢

目录 一、什么是 pSLC 二、各 NAND FLASH 的特点 三、pSLC 的优缺点 四、应用场景 一、什么是 pSLC pSLC&#xff08;Pseudo-Single Level Cell&#xff09;即伪 SLC&#xff0c;是一种将 MLC/TLC 改为 SLC 的一种技术&#xff0c;现 Nand Flash 基本支持此功能&#xff0…...

减速电机的基本结构及用料简介

资料来源&#xff1a;淘宝上某商家&#xff0c;它提供功率极小的电机。比如5W 1.整体结构剖面图 如下图&#xff0c;左侧是减速箱&#xff0c;和动力输出轴&#xff0c;右侧可以看到定子的铜丝绕组和中间的转子&#xff0c;它们贴合地非常紧密。气隙很窄。它的转子很像是铝制…...

1688跨境电商接口开放接入,跨境电商的尽头到底谁在赚钱?

1688&#xff08;阿里巴巴&#xff09;作为国内甚至全世界最大的线上批发集采平台&#xff0c;一直以来都是大部分跨境卖家选品和开发的主要平台之一&#xff0c;也保持着良好的上下游供应链关系。 不过&#xff0c;就在近日&#xff0c;1688正式推出跨境寻源通计划&#xff0c…...

SpringBoot 增量部署发布

一、背景介绍 由于项目依赖的jar越来越多&#xff0c;Springboot默认的打包方式是将整个项目打包成一个jar包&#xff0c;每次发布时&#xff0c;打包后的jar越来越大&#xff0c;更新一个很小的功能&#xff0c;需要将整个jar上传运行。这样效率太低了&#xff0c;考虑实现每…...

java八股!1

集合 目录 集合java中存在哪些集合&#xff1f;底层实现逻辑&#xff1f;哪些集合是线程安全的&#xff1f;集合的对比&#xff1a;hash冲突如何解决hashmap为什么线程不安全&#xff0c;如何实现安全&#xff1f;hashmap中循环链表的产生hashmap底层实现原理和扩容机制map的遍…...

【学术会议征稿】2024年智能驾驶与智慧交通国际学术会议(IDST 2024)

2024年智能驾驶与智慧交通国际学术会议(IDST 2024) 2024 International Conference on Intelligent Driving and Smart Transportation 智能驾驶和智慧交通利用新兴技术&#xff0c;使城市出行更加方便、更具成本效益且更安全。在此背景下&#xff0c;由中南大学主办的2024年…...

2024最全网络安全工程师面试题(附答案)

&#x1f91f; 基于入门网络安全/黑客打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 2024年过去了一大半&#xff0c;先来灵魂三连问&#xff0c;年初定的目标完成多少了&#xff1f;薪资涨了吗&#xff1f;女朋友找到了吗&#xff1f; 一、网络…...

828华为云征文| 华为云 Flexus X 实例:引领云计算新时代的柔性算力先锋

828华为云征文| 华为云 Flexus X 实例&#xff1a;引领云计算新时代的柔性算力先锋 1. 推出背景 在数字经济快速发展的当下&#xff0c;数字化转型已成为企业发展的必然趋势。然而&#xff0c;中小企业在数字化转型过程中面临着诸多困境。据《2024 年中小企业数字化转型白皮书…...

何时何地,你需要提示工程、函数调用、RAG还是微调大模型?

介绍 在快速发展的生成式人工智能领域&#xff0c;某些流行术语已变得司空见惯&#xff1a;“提示工程”、“函数调用”、“RAG”和“微调”&#xff0c;你应该也经常遇到这些术语&#xff0c;但你是否能够理清这些概念之间的关系&#xff1f;这些其实都是一些大模型的应用策略…...

three.js线框模式

背景 设计师希望弄一个模型的这个效果&#xff1a; 但是&#xff0c;我使用three.js提供的EdgesGeometry死活只能做到下面这种&#xff1a; 后来才知道three.js只支持画三角面&#xff0c;四边形面并不支持&#xff0c;这是由更底层的webGL决定的。 但是在查找资料的过程中&…...

VScode 的简单使用

目录 1. VScode 的使用 1.1 常用插件 1.2 常用快捷键 1. VScode 的使用 1.1 常用插件 1.2 常用快捷键 也可以“ CTRLD ”&#xff1b;使用“CTRL滚轮”即可&#xff1b; ctrl /-&#xff0c;是用来展开/收起代码的&#xff1b; 比如&#xff1a;js 的多行注释是 shiftalt…...

五星级可视化页面(07):城市交通方向,城市畅通的保障。

城市交通方面的可视化大屏&#xff0c;一方面用户可以通过五星级可视化页面快速了解城市交通方向&#xff0c;实时掌握交通状况&#xff0c;选择最佳出行方案&#xff0c;提高出行效率&#xff0c;另一方面也有助于城市交通管理部门进行交通流量调度和管理。 本期发布一些经典…...

贪心+构造,1924A - Did We Get Everything Covered?

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1924A - Did We Get Everything Covered? 二、解题报告 1、思路分析 我…...

麦汁煮沸工艺

麦汁煮沸是啤酒酿造中至关重要的工艺环节之一&#xff0c;直接影响啤酒的风味。今天&#xff0c;天泰邀您一起深入探讨这一关键的酿造技术。 煮沸麦汁 在煮沸麦汁时&#xff0c;时间和温度控制至关重要。通常&#xff0c;麦汁煮沸持续 40 到 50 分钟&#xff0c;具体时间取决于…...

企业级WEB应用服务器---TOMACT

一、WEB技术介绍 1.1 Http和B/S结构 操作系统一般都有子进程系统&#xff0c;使用多进程就可以充分利用硬件资源&#xff0c;提高效率。在前面的学习中我们了解到进程中可以有多个线程&#xff0c;且每一个线程都可以被CPU调度执行&#xff0c;这样就可以让程序并行执行。一台…...

前端:JavaScript中的this

前端&#xff1a;JavaScript中的this 1. this的指向2. 指定this的值3. 手写call方法4. 手写apply方法5. 手写bind方法 1. this的指向 在非严格模式下&#xff0c;总是指向一个对象&#xff1b;在严格模式下可以是任意值。 开启严格模式&#xff0c;如果是为整个脚本开启&#…...

Zynq7020 SDK 初学篇(5)- 中断

1.开发背景 基于上一个篇章 GPIO 使用&#xff0c;引入中断的使用。 2.开发需求 PS 和 PL 按键输入中断&#xff0c;并输出对应的日志打印 3.开发环境 Zynq7020 Vivado2017.4 4.实现步骤 4.1 设计配置 PL Key0 56 PS key0 12 PS key1 11 4.2 代码编写 GPIO 配置 #if…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...