Python 姿势估计:提取关键点并添加到列表中
Python 姿势估计:提取关键点并添加到列表中
本文将介绍如何使用 Python 进行姿势估计,并提取关键点坐标添加到列表中。
提取关键点坐标并添加到列表
首先,我们需要获取姿势估计的结果。假设 results 包含姿势估计的结果,并且 mp_pose.PoseLandmark 是一个枚举类型,包含所有关键点的名称。
# 将姿势估计结果添加到列表中
pose_results.append([folder_name,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.NOSE].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.NOSE].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_SHOULDER].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_SHOULDER].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_SHOULDER].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_SHOULDER].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_ELBOW].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_ELBOW].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_ELBOW].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_ELBOW].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_WRIST].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_WRIST].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_WRIST].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_WRIST].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_HIP].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_HIP].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_HIP].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_HIP].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_KNEE].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_KNEE].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_KNEE].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_KNEE].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_ANKLE].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_ANKLE].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_ANKLE].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_ANKLE].y])
# 获取人体姿势信息
pose_data = []
for landmark in results.pose_landmarks.landmark:
pose_data.append(landmark.x)
pose_data.append(landmark.y)
pose_data.append(landmark.z if landmark.z is not None else 0)
pose_data.extend([results.pose_landmarks.landmark[mp_pose.PoseLandmark.NOSE].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.NOSE].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_SHOULDER].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_SHOULDER].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_SHOULDER].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_SHOULDER].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_ELBOW].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_ELBOW].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_ELBOW].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_ELBOW].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_WRIST].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_WRIST].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_WRIST].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_WRIST].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_HIP].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_HIP].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_HIP].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_HIP].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_KNEE].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_KNEE].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_KNEE].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_KNEE].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_ANKLE].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_ANKLE].y,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_ANKLE].x,
results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_ANKLE].y])
代码解释:
pose_results是一个列表,用于存储每个姿势的提取结果。folder_name是当前图像所在的文件夹名称,可以根据需要修改。results.pose_landmarks.landmark是一个列表,包含每个关键点的坐标信息,每个关键点包含x,y,z三个坐标值。mp_pose.PoseLandmark.NOSE等是枚举类型,代表每个关键点的名称。- 代码使用
append方法将关键点坐标添加到pose_results列表中。 pose_data列表用于存储所有关键点的坐标值。- 代码使用循环遍历
results.pose_landmarks.landmark列表,并将每个关键点的x,y,z坐标值添加到pose_data列表中。
总结
本文介绍了如何使用 Python 进行姿势估计,并提取关键点坐标添加到列表中。希望能对大家有所帮助。
注意事项
- 代码需要依赖
mediapipe库,请确保已安装该库。 - 代码中的关键点名称和坐标值需要根据实际情况进行修改。
相关资源
原文地址: http://www.cveoy.top/t/topic/gNhW 著作权归作者所有。请勿转载和采集!