解决 `mediapipe` 中 `TypeError: __init__() got an unexpected keyword argument 'upper_body_only'` 错误
解决 mediapipe 中 TypeError: __init__() got an unexpected keyword argument 'upper_body_only' 错误
这个错误提示是因为 mp_pose.Pose 没有 'upper_body_only' 这个参数。可能是因为 mediapipe 库版本更新导致的。
解决方法:
- 使用旧版本的
mediapipe库: 如果您需要使用'upper_body_only'参数,可以尝试使用旧版本的mediapipe库。您可以使用pip install mediapipe==[版本号]安装特定版本的mediapipe。 - 使用其他方式实现所需功能: 您可以使用其他方法实现您需要的功能,例如:
- 使用
mp_pose.PoseLandmark类获取所有身体关键点,然后根据需要选择上半身的关键点。 - 使用其他库实现人体姿态识别功能。
- 使用
示例代码:
import mediapipe as mp
# 初始化 pose tracker
pose_tracker = mp.solutions.pose.Pose()
# 获取所有身体关键点
landmarks = pose_tracker.process(image).pose_landmarks
# 选择上半身关键点
for landmark in landmarks.landmark:
if landmark.visibility > 0.5 and landmark.part in [mp.solutions.pose.PoseLandmark.NOSE, mp.solutions.pose.PoseLandmark.LEFT_SHOULDER, mp.solutions.pose.PoseLandmark.RIGHT_SHOULDER, mp.solutions.pose.PoseLandmark.LEFT_ELBOW, mp.solutions.pose.PoseLandmark.RIGHT_ELBOW, mp.solutions.pose.PoseLandmark.LEFT_WRIST, mp.solutions.pose.PoseLandmark.RIGHT_WRIST, mp.solutions.pose.PoseLandmark.LEFT_HIP, mp.solutions.pose.PoseLandmark.RIGHT_HIP, mp.solutions.pose.PoseLandmark.LEFT_KNEE, mp.solutions.pose.PoseLandmark.RIGHT_KNEE, mp.solutions.pose.PoseLandmark.LEFT_ANKLE, mp.solutions.pose.PoseLandmark.RIGHT_ANKLE]:
print(landmark.part, landmark.x, landmark.y, landmark.z)
注意:
- 如果您可以使用新版本的
mediapipe,建议您不要使用'upper_body_only'参数,因为它可能在未来的版本中被移除。 - 您也可以参考
mediapipe的官方文档了解更多信息。
原文地址: https://www.cveoy.top/t/topic/j88a 著作权归作者所有。请勿转载和采集!