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

如何将归一化(x,y,z,v)扁平列表转为NormalizedLandmarkList以构建pose_landmarks

解决方案

要从CSV中存储的扁平归一化数值列表重建results.pose_landmarks结构,你需要按照MediaPipe Pose的关键点格式,将扁平数据拆分并组装成对应的PoseLandmarks和PoseLandmark对象,具体步骤如下:

步骤说明

MediaPipe的PoseLandmarks包含33个PoseLandmark元素,每个元素对应一个身体关键点,每个关键点存储x、y、z、visibility四个归一化值。CSV中的一行数据正是这33个关键点的四个值按顺序拼接的扁平列表,因此我们只需按每4个值一组拆分,逐个构建关键点对象即可。

完整代码示例

import mediapipe as mp
import csv
import cv2

# 1. 读取CSV中的扁平姿态数据
with open('pose_data.csv', 'r') as f:
    csv_reader = csv.reader(f)
    # 获取目标行(这里以第一行为例,可根据需求调整)
    flat_pose_values = next(csv_reader)
# 将字符串转为浮点数
flat_pose_values = list(map(float, flat_pose_values))

# 2. 重建PoseLandmarks结构
mp_pose = mp.solutions.pose
reconstructed_pose = mp_pose.PoseLandmarks()

# 按每4个值为一组,遍历构建每个关键点
for idx in range(0, len(flat_pose_values), 4):
    landmark = mp_pose.PoseLandmark()
    landmark.x = flat_pose_values[idx]
    landmark.y = flat_pose_values[idx+1]
    landmark.z = flat_pose_values[idx+2]
    landmark.visibility = flat_pose_values[idx+3]
    reconstructed_pose.landmarks.append(landmark)

# 3. 使用mp_drawing绘制姿态标注
mp_drawing = mp.solutions.drawing_utils
# 读取待标注图像
image = cv2.imread('target_image.jpg')
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# 绘制关键点和连接线条
mp_drawing.draw_landmarks(
    image,
    reconstructed_pose,
    mp_pose.POSE_CONNECTIONS,
    # 关键点样式
    mp_drawing.DrawingSpec(color=(245, 117, 66), thickness=2, circle_radius=2),
    # 连接线样式
    mp_drawing.DrawingSpec(color=(245, 66, 230), thickness=2)
)

# 保存或展示结果
cv2.imwrite('annotated_pose.jpg', image)
cv2.imshow('Annotated Pose', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

注意事项

  • 确保CSV中的数据顺序与MediaPipe Pose的33个关键点顺序完全一致,否则标注会出现错位(MediaPipe Pose关键点顺序固定,从鼻子、眼睛、耳朵依次到脚部)。
  • 验证CSV行的元素数量应为132(33个关键点 × 4个属性),避免数据缺失或冗余导致重建失败。
  • 归一化的x/y值范围为0-1,z值相对关键点深度,visibility值为0-1(1表示关键点可见度高),确保转换后的数值符合该范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:20:24