视频演示
https://www.bilibili.com/video/BV1wnHyzPEvM
大家好,我是Coding茶水间。
今天分享一个基于YOLO算法的运动监测项目,通过识别人体关键关节节点,实现对俯卧撑、深蹲、压腿和高抬腿等动作的自动计数。
视频演示中,我们可以看到实时标注关节点、计算弯曲角度,并统计动作次数。这是一个简单实用的AI应用,适合计算机视觉和体育健康领域的爱好者。
项目效果演示
在视频开头,我们看到一个俯卧撑监测的示例:程序用红色圆圈标注肩膀、肘部和手腕,并显示弯曲角度。随着角度变化,动作次数实时更新,最终计数为4次。

核心原理:人体关键关节节点识别
YOLO算法将人体关节分为17个关键节点,包括眼睛、鼻子、耳朵、肩膀、肘部、手腕、髋关节、膝盖和脚踝等。通过识别这些节点的位置,分析关节间的弯曲角度,来判断动作姿态和计数。

对于俯卧撑,我们重点识别左臂的肩膀(节点5)、肘部(节点7)和手腕(节点9)。
弯曲角度如152度时,表示伸展状态;
角度变化用于计数。
类似地,其他动作选择相应节点:
- 深蹲:肩膀(6)、髋关节(12)、膝盖(14)
- 压腿:髋关节(11)、膝盖(13)、脚踝(15)
- 高抬腿:髋关节(12)、膝盖(14)、脚踝(16)
原理是通过三个核心节点的弯曲情况,监测伸展(up)和收缩(down)状态。
一旦完成一个周期,计数加1。
代码实现
我们使用Python、OpenCV和Ultralytics的solutions包。核心是AIGym类,用于运动监测。以下是完整代码(以俯卧撑为例):


