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])

代码解释:

  1. pose_results 是一个列表,用于存储每个姿势的提取结果。
  2. folder_name 是当前图像所在的文件夹名称,可以根据需要修改。
  3. results.pose_landmarks.landmark 是一个列表,包含每个关键点的坐标信息,每个关键点包含 x, y, z 三个坐标值。
  4. mp_pose.PoseLandmark.NOSE 等是枚举类型,代表每个关键点的名称。
  5. 代码使用 append 方法将关键点坐标添加到 pose_results 列表中。
  6. pose_data 列表用于存储所有关键点的坐标值。
  7. 代码使用循环遍历 results.pose_landmarks.landmark 列表,并将每个关键点的 x, y, z 坐标值添加到 pose_data 列表中。

总结

本文介绍了如何使用 Python 进行姿势估计,并提取关键点坐标添加到列表中。希望能对大家有所帮助。

注意事项

  • 代码需要依赖 mediapipe 库,请确保已安装该库。
  • 代码中的关键点名称和坐标值需要根据实际情况进行修改。

相关资源

Python 姿势估计:提取关键点并添加到列表中

原文地址: http://www.cveoy.top/t/topic/gNhW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录