You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Mediapipe识别视频姿态时出现AttributeError错误的求助

修复Mediapipe视频姿态识别的AttributeError问题

错误原因

视频中部分帧可能存在无人体姿态、画面模糊或姿态超出检测范围的情况,导致Mediapipe返回的results.pose_landmarks为None,此时直接访问.landmark属性就会触发AttributeError。而摄像头实时画面通常姿态稳定、检测成功率高,所以不会出现该问题。

修复步骤

1. 增加空值判断(核心修复)

在访问pose_landmarks.landmark之前,先检查results.pose_landmarks是否不为空:

import cv2
import mediapipe as mp

mp_pose = mp.solutions.pose
pose = mp_pose.Pose()

cap = cv2.VideoCapture("your_video_path.mp4")

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break  # 视频读取完毕或出错,退出循环
    
    # 处理帧并检测姿态
    frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
    results = pose.process(frame_rgb)
    
    # 关键:先判断pose_landmarks是否存在
    if results.pose_landmarks:
        # 访问特定landmark,比如鼻子(索引0)
        nose_landmark = results.pose_landmarks.landmark[mp_pose.PoseLandmark.NOSE]
        # 后续处理逻辑...
    else:
        # 可选:无姿态检测时的提示或处理
        print("当前帧未检测到姿态")
    
    # 显示帧(可选)
    cv2.imshow("Pose Detection", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

2. 优化视频读取逻辑

确保每次读取帧时,ret为True(表示成功读取帧),避免处理空帧导致的连锁错误。

3. 调整Mediapipe检测参数(可选)

如果视频中姿态检测率过低,可以初始化Pose时调整参数,提高检测灵敏度:

pose = mp_pose.Pose(
    min_detection_confidence=0.5,  # 降低检测置信度阈值,默认0.5
    min_tracking_confidence=0.5    # 降低追踪置信度阈值,默认0.5
)

内容的提问来源于stack exchange,提问作者dee_to

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:20:27