基于MediaPipe Pose的健身动作识别与计数系统-MediaPipe Pose
## 项目描述 基于MediaPipe Pose的健身动作识别与计数系统
本项目是一套基于 MediaPipe Pose 的健身动作识别与计数系统。给定一段健身视频,系统自动识别人体正在进行的动作类型(深蹲、俯卧撑、仰卧起坐/平板支撑),并输出对应的重复次数或保持时长。项目无需训练任何自定义模型,完全基于预训练姿态估计模型加规则算法实现,同时提供批量视频处理和 Web 端在线推理两种使用方式。
## 项目功能
支持三类健身动作的自动识别与计数:深蹲(按膝角变化计数)、俯卧撑(按肘角变化计数)、平板支撑(按稳定姿态计时)。系统对上传视频逐帧分析,输出带骨骼标注的结果视频和 CSV 统计文件。通过 Flask Web 页面可在线上传视频、查看识别结果并播放标注后的视频。另有批量处理模式,可自动遍历目录下所有视频并汇总结果。针对俯卧撑与平板支撑易混淆的问题,系统引入滑动窗口稳定性判据加以区分;通过姿态粗分类(站立/俯卧/仰卧)降低跨动作误触发;采用连续帧确认状态机抑制关键点抖动导致的误计数。
## 运行环境
Windows 11 操作系统,Python 3.11,CPU 即可运行,无需独立显卡。测试环境为 Intel i7-1165G7、16GB 内存,1080p 视频处理速度约 30 FPS,内存占用约 300 MB。项目依赖独立虚拟环境运行,Web 端通过浏览器访问 http://127.0.0.1:5000 使用。
## 项目技术
核心技术栈为 Python + MediaPipe + OpenCV + Flask。姿态估计层使用 MediaPipe Pose 预训练模型(模型体积约 10 MB,随 pip 包内置)提取人体 33 个 2D 骨骼关键点,CPU 单帧推理约 30 毫秒。特征提取层基于向量点积法计算膝角、肘角、躯干角等关节夹角。识别算法采用姿态粗分类前置、多级状态机、滑动窗口稳定性判据、帧级连续确认等规则方法。视频输出采用 H.264 编码保证浏览器兼容播放。Web 层基于 Flask 提供上传接口、JSON 结果返回和标注视频回播。与 OpenPose、HRNet 相比,本方案模型体积小 10 到 20 倍,CPU 推理速度快 6 到 10 倍,适合边缘部署和实时应用。
以上系统源码经过技术整理与调试,确保能正常运行


