news 2026/4/21 20:49:26

用MediaPipe Pose模块做个AI健身教练:Python+OpenCV实时分析深蹲动作(附完整代码)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用MediaPipe Pose模块做个AI健身教练:Python+OpenCV实时分析深蹲动作(附完整代码)

用MediaPipe Pose打造智能深蹲教练:从关节点检测到动作标准度分析实战

居家健身时最头疼的莫过于动作是否标准——膝盖有没有内扣?背部是否保持挺直?今天我们就用Python+MediaPipe构建一个实时深蹲动作分析系统,通过计算机视觉技术让手机摄像头变身AI私教。这个项目不仅能输出关节角度数据,还会在画面中用颜色标记动作错误,适合想将计算机视觉落地到健身场景的开发者。

1. 环境搭建与MediaPipe基础

首先需要安装必要的库,建议使用Python 3.8+环境:

pip install mediapipe opencv-python numpy

MediaPipe的Pose模块提供33个人体关节点检测,包括四肢、躯干和面部特征点。初始化时这几个参数需要特别注意:

import mediapipe as mp mp_pose = mp.solutions.pose pose = mp_pose.Pose( static_image_mode=False, # 视频流模式 model_complexity=1, # 平衡精度与速度 smooth_landmarks=True, # 平滑处理 min_detection_confidence=0.5, min_tracking_confidence=0.5 )

关键点坐标以比例值形式返回(0-1之间),需要转换为像素坐标才能绘制到图像上。这个转换过程需要注意图像宽高的获取时机:

h, w = image.shape[:2] # 必须先获取图像尺寸 landmark_px = int(landmark.x * w), int(landmark.y * h) # 像素坐标转换

2. 深蹲动作的 biomechanics 分析

一个标准的深蹲需要监控三个关键指标:

  1. 膝盖位置:膝盖不应超过脚尖垂直线
  2. 背部姿态:脊椎应保持自然生理弯曲
  3. 下蹲深度:大腿至少与地面平行

通过MediaPipe获取的关节点,我们可以计算这些指标:

检测指标相关关节点计算方法
膝盖前伸脚踝、膝盖、髋关节膝盖到脚尖的水平距离
背部弯曲肩、髋、膝三点三点连线形成的角度
下蹲深度髋关节高度与站立时髋高的比值

计算关节角度的实用函数示例:

def calculate_angle(a, b, c): """计算三点形成的夹角(度)""" a, b, c = np.array(a), np.array(b), np.array(c) radians = np.arctan2(c[1]-b[1], c[0]-b[0]) - np.arctan2(a[1]-b[1], a[0]-b[0]) angle = np.abs(radians*180.0/np.pi) return angle if angle <= 180 else 360-angle

3. 实时反馈系统实现

完整的处理流程应该包括:

  1. 摄像头帧捕获
  2. 关节点检测
  3. 动作分析
  4. 可视化反馈

核心处理循环代码结构:

cap = cv2.VideoCapture(0) while cap.isOpened(): success, image = cap.read() if not success: continue # 关节点检测 image.flags.writeable = False results = pose.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)) if results.pose_landmarks: # 获取关键关节点坐标 landmarks = results.pose_landmarks.landmark left_hip = [landmarks[mp_pose.PoseLandmark.LEFT_HIP].x, ...] right_knee = [landmarks[mp_pose.PoseLandmark.RIGHT_KNEE].x, ...] # 计算各项指标 knee_angle = calculate_angle(left_hip, left_knee, left_ankle) # 可视化反馈 if knee_angle < 160: cv2.putText(image, "DEEP ENOUGH", (100,100), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,255,0), 2)

可视化技巧:

  • 用不同颜色线条区分动作状态(绿色=标准,红色=错误)
  • 在关节位置添加实时角度数值显示
  • 在画面侧边添加动作完成度进度条

4. 性能优化与常见问题

提升实时性的几个关键点:

  1. 分辨率调整:将输入图像缩小到640x480再处理
  2. 帧率控制:设定固定处理频率(如15fps)
  3. 多线程处理:将图像采集与计算分离
# 设置摄像头分辨率 cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) # 固定帧率处理 frame_count = 0 process_every_n_frame = 2 # 每2帧处理一次

常见问题解决方案:

  • 关节点抖动:增加smooth_landmarks参数或添加移动平均滤波
  • 多人场景:MediaPipe默认只检测最显著的人体,需要自定义扩展
  • 遮挡处理:通过前后帧数据插值补全缺失关节点

实际测试中发现,当用户穿着单色紧身衣时检测准确率能提升约30%。对于家庭使用场景,建议在初始化时设置model_complexity=2以获得更好的精度。

5. 扩展应用场景

这套系统稍作修改就能应用于其他健身动作分析:

  1. 平板支撑:检测髋部是否下沉
  2. 俯卧撑:计算身体下降幅度
  3. 引体向上:测量下巴过杠高度

对于康复训练场景,可以增加:

  • 运动范围(ROM)测量
  • 左右侧动作对称性分析
  • 运动轨迹记录与回放

在最近的一个客户案例中,我们将该系统与智能镜子结合,用户无需穿戴任何设备就能获得实时动作指导,特别适合居家康复训练场景。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 20:49:18

2026年03月CCF-GESP编程能力等级认证Python编程二级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(每题 2 分,共 30 分) 第 1 题 2026 年春节联欢晚会上一个武术表演节目《武 BOT》。节目中多个人形机器人会表演空翻,它们落地可能会有微微踉跄,但都会…

作者头像 李华
网站建设 2026/4/21 20:48:19

7 种替代方案:通过蓝牙从 iPhone 传输文件到安卓手机

“我现在找不到任何能指导我在安卓和 iOS 之间传输数据的文档或示例&#xff0c;有没有能通过蓝牙完成传输的应用&#xff1f;”—— 来自苹果官方论坛 当你从 iPhone 换成安卓手机&#xff0c;却没有稳定 Wi‑Fi 或 USB 连接时&#xff0c;如何用蓝牙把 iPhone 文件传到安卓会…

作者头像 李华
网站建设 2026/4/21 20:47:19

DRAM架构原理与性能优化全解析

1. DRAM基础架构与访问原理动态随机存取存储器&#xff08;DRAM&#xff09;是现代计算机系统中成本与容量平衡最佳的主存解决方案。其核心存储单元由单个晶体管和电容组成&#xff0c;这种1T1C结构通过电容电荷存储数据&#xff08;高电平为1&#xff0c;放电状态为0&#xff…

作者头像 李华
网站建设 2026/4/21 20:47:03

企业级AI试衣系统源码交付:支持高并发与多场景适配

温馨提示&#xff1a;文末有资源获取方式在电商服装类目中&#xff0c;商品展示效果直接决定转化率。传统模特拍摄成本高、周期长&#xff0c;已成为行业普遍痛点。近期&#xff0c;一套企业级AI试衣系统源码进入市场&#xff0c;基于自研智能试衣算法&#xff0c;支持高并发访…

作者头像 李华
网站建设 2026/4/21 20:42:43

DataSyncPro:企业级跨平台数据同步工具的终极指南

DataSyncPro&#xff1a;企业级跨平台数据同步工具的终极指南 【免费下载链接】damaihelper 支持大麦网&#xff0c;淘票票、缤玩岛等多个平台&#xff0c;演唱会演出抢票脚本 项目地址: https://gitcode.com/gh_mirrors/dam/damaihelper 在现代数据驱动时代&#xff0c…

作者头像 李华