2026/3/1 13:34:27
网站建设
项目流程
学校网站建设代码,网站做的漂亮的企业,网站外链如何做,php做用户登录网站Python 肢体动作追踪项目#xff08;基于MediaPipe OpenCV#xff09;
本文简单介绍一个可直接运行的Python肢体动作追踪项目#xff0c;核心将采用MediaPipe Pose#xff08;谷歌开源的高精度姿态估计工具#xff09;结合OpenCV#xff08;图像/视频处理库#xff09;…Python 肢体动作追踪项目基于MediaPipe OpenCV本文简单介绍一个可直接运行的Python肢体动作追踪项目核心将采用MediaPipe Pose谷歌开源的高精度姿态估计工具结合OpenCV图像/视频处理库实现该方案无需训练自定义模型开箱即用适合快速落地肢体追踪需求。一、项目前置准备1. 安装必要依赖库打开终端/命令提示符执行以下安装命令# 安装OpenCV用于视频捕获、图像渲染pipinstallopencv-python# 安装MediaPipe核心肢体姿态检测引擎pipinstallmediapipe2. 依赖说明opencv-python负责调用摄像头、读取视频文件、绘制追踪结果和显示窗口。mediapipe内置预训练的Pose模型可检测人体33个关键骨骼点如头部、肩膀、手肘、膝盖等支持实时追踪。二、完整项目源码importcv2importmediapipeasmp# ---------------------- 初始化配置 ----------------------# 1. 初始化MediaPipe Pose相关组件mp_posemp.solutions.pose# 创建Pose检测对象设置静态图像检测/置信度阈值# static_image_modeFalse适合视频/实时流更高效# min_detection_confidence最小检测置信度0-1越高越严格# min_tracking_confidence最小追踪置信度0-1越高越稳定posemp_pose.Pose(static_image_modeFalse,model_complexity1,# 模型复杂度0/1/2越高精度越高、速度越慢min_detection_confidence0.5,min_tracking_confidence0.5)# 2. 初始化MediaPipe绘图工具用于绘制骨骼点和连接线mp_drawingmp.solutions.drawing_utils# 定义骨骼点和连接线的绘制样式可选默认样式也可满足需求drawing_spec_landmarkmp_drawing.DrawingSpec(color(0,255,0),# 骨骼点颜色绿色thickness5,# 骨骼点大小circle_radius3)drawing_spec_connectionmp_drawing.DrawingSpec(color(255,0,0),# 连接线颜色蓝色thickness3,# 连接线粗细circle_radius2)# ---------------------- 核心追踪逻辑 ----------------------defbody_pose_tracking():# 1. 打开摄像头参数0默认内置摄像头若外接摄像头可改为1/2等capcv2.VideoCapture(0)# 设置摄像头分辨率可选根据硬件调整cap.set(cv2.CAP_PROP_FRAME_WIDTH,1280)cap.set(cv2.CAP_PROP_FRAME_HEIGHT,720)ifnotcap.isOpened():print(错误无法打开摄像头)return# 2. 循环读取视频帧并进行姿态追踪whilecap.isOpened():# 读取一帧图像ret,framecap.read()ifnotret:print(警告无法读取摄像头帧退出循环)break# ---------------------- 关键处理步骤 ----------------------# a. 图像格式转换OpenCV读取的是BGR格式MediaPipe需要RGB格式frame_rgbcv2.cvtColor(frame,cv2.COLOR_BGR2RGB)# b. 禁用图像写入提升处理速度frame_rgb.flags.writeableFalse# c. 传入Pose模型进行姿态检测resultspose.process(frame_rgb)# d. 重新启用图像写入用于绘制结果frame_rgb.flags.writeableTrue# e. 格式转换回BGR用于OpenCV显示frame_bgrcv2.cvtColor(frame_rgb,cv2.COLOR_RGB2BGR)# 3. 绘制肢体追踪结果骨骼点连接线ifresults.pose_landmarks:# 绘制33个骨骼点和对应的连接线mp_drawing.draw_landmarks(imageframe_bgr,landmark_listresults.pose_landmarks,connectionsmp_pose.POSE_CONNECTIONS,landmark_drawing_specdrawing_spec_landmark,connection_drawing_specdrawing_spec_connection)# 可选获取某个骨骼点的坐标示例获取鼻子的坐标nose_landmarkresults.pose_landmarks.landmark[mp_pose.PoseLandmark.NOSE]# 转换为像素坐标frame_bgr.shape[1]宽度frame_bgr.shape[0]高度nose_xint(nose_landmark.x*frame_bgr.shape[1])nose_yint(nose_landmark.y*frame_bgr.shape[0])# 在图像上标注鼻子坐标cv2.putText(frame_bgr,fNose: ({nose_x},{nose_y}),(nose_x10,nose_y),cv2.FONT_HERSHEY_SIMPLEX,0.5,(0,255,255),1,cv2.LINE_AA)# 4. 显示追踪窗口cv2.imshow(Body Pose Tracking (Press q to quit),frame_bgr)# 5. 退出条件按下q键关闭窗口ifcv2.waitKey(1)0xFFord(q):break# 6. 释放资源cap.release()cv2.destroyAllWindows()pose.close()# ---------------------- 运行项目 ----------------------if__name____main__:print(正在启动肢体动作追踪...)print(提示按下q键可退出程序)body_pose_tracking()print(肢体动作追踪已结束)三、项目运行说明1. 运行步骤确保已安装所有依赖库opencv-python、mediapipe。将上述源码保存为body_pose_tracking.py文件。终端进入文件所在目录执行命令python body_pose_tracking.py。程序启动后会自动调用电脑内置摄像头弹出追踪窗口显示肢体骨骼追踪结果。按下键盘q键即可退出程序并释放摄像头资源。2. 运行效果窗口中实时显示你的肢体动作绿色圆点为人体33个关键骨骼点蓝色线条为骨骼连接线。鼻子位置会标注其像素坐标可选功能可扩展其他骨骼点的坐标获取。支持实时跟随肢体移动无明显延迟取决于电脑性能和摄像头帧率。四、核心功能解析MediaPipe Pose 初始化配置模型复杂度、检测/追踪置信度平衡精度和运行速度。摄像头数据读取通过cv2.VideoCapture获取实时视频帧处理摄像头打开失败的异常。图像格式转换MediaPipe仅支持RGB格式图像而OpenCV默认读取BGR格式需进行格式互转。姿态检测与结果绘制调用pose.process()得到骨骼点数据通过draw_landmarks()绘制追踪结果。资源释放程序退出时释放摄像头、关闭窗口、关闭Pose模型避免资源泄露。五、扩展方向可选视频文件追踪将cv2.VideoCapture(0)改为cv2.VideoCapture(your_video.mp4)即可对本地视频文件进行肢体追踪。骨骼点坐标保存将检测到的骨骼点坐标写入csv文件用于后续动作分析、机器学习训练。自定义动作识别通过判断特定骨骼点的相对位置如手肘是否弯曲、膝盖是否抬起实现自定义动作如举手、深蹲的识别。提升模型精度将model_complexity改为2模型精度更高但对电脑性能要求更高适合高性能设备。六、常见问题排查摄像头无法打开检查摄像头是否被其他程序占用外接摄像头需确认连接正常将cv2.VideoCapture(0)改为1尝试。运行卡顿降低模型复杂度model_complexity0、降低摄像头分辨率或关闭其他占用性能的程序。无骨骼点绘制确保环境光线充足避免过暗/过曝人体处于摄像头画面中央提高min_detection_confidence阈值如0.7。依赖安装失败升级pippython -m pip install --upgrade pip再重新安装依赖库国内用户可使用镜像源加速安装。AttributeError: module ‘mediapipe’ has no attribute ‘solutions’检查安装的mediapipe的版本可以通过安装低版本解决此问题。总结该项目基于MediaPipe Pose和OpenCV实现无需自定义训练快速实现实时肢体动作追踪。核心流程摄像头取帧→格式转换→姿态检测→结果绘制→窗口显示逻辑清晰且易于扩展。运行关键安装对应依赖、确保摄像头可用、按下q键正常退出释放资源。