【姿态估计实战】使用OpenCV和Mediapipe构建锻炼跟踪器【附完整源码与详细说明】
《------往期经典推荐------》
一、AI应用软件开发实战专栏【链接】
项目名称 | 项目名称 |
---|---|
1.【人脸识别与管理系统开发】 | 2.【车牌识别与自动收费管理系统开发】 |
3.【手势识别系统开发】 | 4.【人脸面部活体检测系统开发】 |
5.【图片风格快速迁移软件开发】 | 6.【人脸表表情识别系统】 |
7.【YOLOv8多目标识别与自动标注软件开发】 | 8.【基于YOLOv8深度学习的行人跌倒检测系统】 |
9.【基于YOLOv8深度学习的PCB板缺陷检测系统】 | 10.【基于YOLOv8深度学习的生活垃圾分类目标检测系统】 |
11.【基于YOLOv8深度学习的安全帽目标检测系统】 | 12.【基于YOLOv8深度学习的120种犬类检测与识别系统】 |
13.【基于YOLOv8深度学习的路面坑洞检测系统】 | 14.【基于YOLOv8深度学习的火焰烟雾检测系统】 |
15.【基于YOLOv8深度学习的钢材表面缺陷检测系统】 | 16.【基于YOLOv8深度学习的舰船目标分类检测系统】 |
17.【基于YOLOv8深度学习的西红柿成熟度检测系统】 | 18.【基于YOLOv8深度学习的血细胞检测与计数系统】 |
19.【基于YOLOv8深度学习的吸烟/抽烟行为检测系统】 | 20.【基于YOLOv8深度学习的水稻害虫检测与识别系统】 |
21.【基于YOLOv8深度学习的高精度车辆行人检测与计数系统】 | 22.【基于YOLOv8深度学习的路面标志线检测与识别系统】 |
23.【基于YOLOv8深度学习的智能小麦害虫检测识别系统】 | 24.【基于YOLOv8深度学习的智能玉米害虫检测识别系统】 |
25.【基于YOLOv8深度学习的200种鸟类智能检测与识别系统】 | 26.【基于YOLOv8深度学习的45种交通标志智能检测与识别系统】 |
27.【基于YOLOv8深度学习的人脸面部表情识别系统】 | 28.【基于YOLOv8深度学习的苹果叶片病害智能诊断系统】 |
29.【基于YOLOv8深度学习的智能肺炎诊断系统】 | 30.【基于YOLOv8深度学习的葡萄簇目标检测系统】 |
31.【基于YOLOv8深度学习的100种中草药智能识别系统】 | 32.【基于YOLOv8深度学习的102种花卉智能识别系统】 |
33.【基于YOLOv8深度学习的100种蝴蝶智能识别系统】 | 34.【基于YOLOv8深度学习的水稻叶片病害智能诊断系统】 |
35.【基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统】 | 36.【基于YOLOv8深度学习的智能草莓病害检测与分割系统】 |
37.【基于YOLOv8深度学习的复杂场景下船舶目标检测系统】 | 38.【基于YOLOv8深度学习的农作物幼苗与杂草检测系统】 |
39.【基于YOLOv8深度学习的智能道路裂缝检测与分析系统】 | 40.【基于YOLOv8深度学习的葡萄病害智能诊断与防治系统】 |
41.【基于YOLOv8深度学习的遥感地理空间物体检测系统】 | 42.【基于YOLOv8深度学习的无人机视角地面物体检测系统】 |
43.【基于YOLOv8深度学习的木薯病害智能诊断与防治系统】 | 44.【基于YOLOv8深度学习的野外火焰烟雾检测系统】 |
45.【基于YOLOv8深度学习的脑肿瘤智能检测系统】 | 46.【基于YOLOv8深度学习的玉米叶片病害智能诊断与防治系统】 |
47.【基于YOLOv8深度学习的橙子病害智能诊断与防治系统】 | 48.【基于深度学习的车辆检测追踪与流量计数系统】 |
49.【基于深度学习的行人检测追踪与双向流量计数系统】 | 50.【基于深度学习的反光衣检测与预警系统】 |
51.【基于深度学习的危险区域人员闯入检测与报警系统】 | 52.【基于深度学习的高密度人脸智能检测与统计系统】 |
53.【基于深度学习的CT扫描图像肾结石智能检测系统】 | 54.【基于深度学习的水果智能检测系统】 |
55.【基于深度学习的水果质量好坏智能检测系统】 | 56.【基于深度学习的蔬菜目标检测与识别系统】 |
57.【基于深度学习的非机动车驾驶员头盔检测系统】 | 58.【太基于深度学习的阳能电池板检测与分析系统】 |
59.【基于深度学习的工业螺栓螺母检测】 | 60.【基于深度学习的金属焊缝缺陷检测系统】 |
61.【基于深度学习的链条缺陷检测与识别系统】 | 62.【基于深度学习的交通信号灯检测识别】 |
63.【基于深度学习的草莓成熟度检测与识别系统】 | 64.【基于深度学习的水下海生物检测识别系统】 |
65.【基于深度学习的道路交通事故检测识别系统】 | 66.【基于深度学习的安检X光危险品检测与识别系统】 |
67.【基于深度学习的农作物类别检测与识别系统】 | 68.【基于深度学习的危险驾驶行为检测识别系统】 |
69.【基于深度学习的维修工具检测识别系统】 | 70.【基于深度学习的维修工具检测识别系统】 |
71.【基于深度学习的建筑墙面损伤检测系统】 | 72.【基于深度学习的煤矿传送带异物检测系统】 |
73.【基于深度学习的老鼠智能检测系统】 |
二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】,持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~
《------正文------》
目录
- 引言
- 什么是OpenCV?
- 什么是姿态估计?
- 什么是Mediapipe?
- 步骤1:设置OpenCV和Mediapipe
- 步骤2:使用OpenCV捕获视频
- 步骤3:使用Mediapipe检测身体关节
- 第四步:姿势估计
- 步骤5:提取关节坐标
- 步骤6:计算关节角度
- 第五步:建立二头肌卷曲计数器
- 第6步:构建二头肌卷曲跟踪器
- 总结
引言
本文主要介绍一个使用OpenCV和Mediapipe的运动跟踪器的实战项目,主要实现手部二头肌卷取动作的检测与计数,并详细介绍了其实现原理与实现代码,供小伙伴们学习参考。当然,通过该项目原理可以实现很多其他锻炼项目的检测与计数,感兴趣的小伙伴自行探索。
什么是OpenCV?
OpenCV(Open Source Computer Vision Library)是计算机视觉领域使用最广泛的工具之一。它是一个开源库,包含2,500多种算法,使我们能够执行目标检测、面部识别和图像处理等任务。
在我们的运动跟踪项目中,OpenCV扮演了关键角色。它使我们能够:
1.从计算机的网络摄像头捕获视频。
2.处理视频的每一帧以检测特定身体部位的运动,如肘部和手腕。
3.以视频和文本叠加的形式向用户显示实时反馈。
我们为这个项目选择OpenCV的主要原因之一是它易于使用Python,即使是初学者也可以使用。OpenCV支持多种平台,包括Windows、macOS和Linux,这使得学生可以轻松地在自己的计算机上运行该项目。
什么是姿态估计?
在我们深入研究我们项目的技术细节之前,理解姿态估计的概念是很重要的。姿态估计是计算机视觉中的一种技术,它允许我们通过检测关键点或“地标”(如肘部,肩部,手腕和臀部)来跟踪和分析人体的运动。
通过连接这些关键点,我们可以绘制人体地图,并测量不同身体部位的运动和角度。
简而言之,姿势估计可以帮助计算机识别您的身体所处的位置。无论您是站着、坐着还是执行特定运动(例如举起哑铃),姿势估计都可以识别每个关节的位置以及它的真实的移动方式。
使用姿势估计跟踪运动的能力使其成为构建需要用户交互的应用程序的理想工具。这包括健身追踪器、互动游戏、虚拟现实和基于手势的界面等应用程序。
什么是Mediapipe?
Mediapipe由Google开发,是一个机器学习框架,可以简化构建用于人体姿势估计,手部跟踪,面部检测等的实时系统。它提供了预先构建的模型,可以以惊人的精度和速度检测人体,手部或面部的关键点。
Mediapipe的设计高度灵活和高效,使其成为移动的设备和实时应用的理想选择。它使用复杂的机器学习算法来跟踪人体上的地标,使其成为我们运动跟踪器项目的完美工具。
这就是为什么Mediapipe是我们项目的最佳选择:
实时性能: Mediapipe可以足够快地处理视频帧,以便为用户提供真实的反馈。
准确度: 它能够以高精度检测身体的最小运动。
用途: 它与Python顺利集成,使初学者易于实现。
与OpenCV一起,Mediapipe允许我们为二头肌卷曲跟踪器捕获和分析身体运动。
步骤1:设置OpenCV和Mediapipe
我们项目的第一步是设置必要的工具。我们首先安装了OpenCV和Mediapipe库,这对捕获视频和检测姿势至关重要。
以下是安装过程:
安装MediaPipe和OpenCV
安装完成后,我们在Python脚本中导入了必要的模块:
导入必要的Python模块
在我们的例子中,OpenCV处理视频捕获,而Mediapipe检测姿势。这两个库将共同创建二头肌卷曲跟踪器。
步骤2:使用OpenCV捕获视频
在这一步中,我们解释了OpenCV如何从计算机的网络摄像头捕获视频。来自网络摄像头的每一帧都经过处理,使我们能够实时查看和分析运动。
以下是我们如何拍摄视频:
用于从网络摄像头流捕获视频帧的代码
步骤3:使用Mediapipe检测身体关节
下一步是使用Mediapipe来检测特定的身体关节,如肩膀,肘部和手腕。Mediapipe的姿态估计模型让我们可以轻松地做到这一点。它为身体的不同部位提供了关键点(地标),我们可以用它来跟踪运动。
我们首先建立了Mediapipe Pose模型。我们还设置了Mediapipe的绘图和姿势工具。
对于每一帧视频,Mediapipe都会检测姿势和地标:
这段代码有助于可视化身体标志,显示肩膀、肘部和手腕等关节上的点。
第四步:姿势估计
现在我们有了依赖项,让我们设置网络摄像头提要并开始检测姿势。
此脚本从网络摄像头捕获视频并应用姿势估计,在屏幕上可视化检测到的姿势。您将看到Mediapipe如何在真实的时间内识别您身体上的关键点。
步骤5:提取关节坐标
接下来,我们将提取特定关节的坐标。这对于以后计算角度至关重要。
为了访问特定的关节,我们使用姿势标志列表中的索引。例如,左肩的坐标可以如下访问:
步骤6:计算关节角度
为了创建运动跟踪器,我们需要计算在卷曲过程中二头肌在不同点的角度。这需要一些简单的三角函数,我们教学生使用一个函数来计算三点之间的角度:肩膀,肘部和手腕。
下面是我们如何计算角度:
代码计算3点之间的角度:肩,肘和手腕
此函数获取肩、肘和腕的坐标,并计算二头肌弯曲期间手肘关节的角度。
我们现在可以使用这个函数来计算手肘关节的角度:
计算并显示肘关节处的角度
肩、肘、腕角度显示
第五步:建立二头肌卷曲计数器
随着角度计算到位,我们现在可以建立我们的运动跟踪器的核心-二头肌卷曲计数器!计数器将根据手肘的角度跟踪卷曲的数量。
我们设置了一个计数器变量来跟踪完成的卷曲次数,并设置了一个阶段变量来检查手臂是处于“向上”还是“向下”的位置。
计算二头肌卷曲次数的代码
这种逻辑确保了手肘从“向下”位置(角度> 160°)移动到“向上”位置(角度< 30°)时,它将被计为一次卷曲。
第6步:构建二头肌卷曲跟踪器
最后,我们将结合之前的代码,实现我们的二头肌卷曲跟踪器。我们将根据手肘关节的角度变化来计算卷曲。
所有代码合并
有了这个,你就建立了一个二头肌卷曲跟踪器,可以计数总次数和显示阶段手臂所在阶段,你的手臂位置(向上或向下)等信息。
总结
本文通过使用Mediapipe和OpenCV构建了一个二头肌卷曲跟踪器,当然你也可以通过了解基础知识,扩展此锻炼监控系统,以跟踪其他锻炼,如蹲下,俯卧撑,甚至瑜伽姿势。这些应用程序不仅提供实时反馈,还使锻炼更具吸引力和乐趣。
好了,这篇文章就介绍到这里,喜欢的小伙伴感谢给点个赞和关注,更多精彩内容持续更新~~
关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!