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

如何根据提取的坐标值重构MediaPipe关键点坐标?

跨设备传输MediaPipe姿态关键点并重构绘制实现方案

你已经完成了本地关键点提取的步骤,后续传输和重构按以下逻辑实现即可,不需要做复杂的格式兼容处理:

  • 发送端数据处理:不要直接序列化原生results.pose_landmarks的protobuf对象,跨设备、跨语言场景下兼容性极差。直接遍历33个人体关键点,按顺序提取每个点的x、y、z、visibility四个浮点值存入列表即可,单帧数据体积极小,不会带来传输延迟。
    Python端提取示例代码:
    import json
    
    landmark_payload = []
    for point in results.pose_landmarks.landmark:
        landmark_payload.append([
            point.x,
            point.y,
            point.z,
            point.visibility
        ])
    # 序列化为JSON字符串后,可通过Socket/WebSocket/HTTP等任意协议传输到目标设备
    send_data = json.dumps(landmark_payload)
    
  • 接收端数据重构:根据目标设备使用的MediaPipe版本,构造与原生NormalizedLandmarkList结构一致的对象即可,重构后的对象可以直接调用官方自带的绘制工具,不需要额外修改原有绘制逻辑。
    Python接收端重构示例代码:
    import json
    from mediapipe.framework.formats import landmark_pb2
    
    # 反序列化接收到的数据
    received_points = json.loads(recv_data)
    # 构建与原生检测结果结构一致的关键点集合
    reconstructed_pose = landmark_pb2.NormalizedLandmarkList()
    for x, y, z, vis in received_points:
        point = reconstructed_pose.landmark.add()
        point.x = x
        point.y = y
        point.z = z
        point.visibility = vis
    
  • 跨语言场景适配:如果发送端和接收端使用不同编程语言(比如发送端是Python、接收端是Web前端/安卓端),不需要强行适配protobuf结构,自行实现绘制逻辑时注意几个坐标规则即可:
    • x、y为归一化坐标,取值范围0~1,分别对应视频帧宽度、高度的比例,绘制时需要乘以当前帧的实际宽高,转换为像素坐标
    • z为以髋部为基准平面的相对深度值,一般仅做姿态判断参考,2D绘制场景下不需要使用
    • visibility为关键点置信度,取值范围0~1,通常置信度低于0.5的关键点可以做半透明处理或者直接跳过绘制,避免误检点干扰显示效果

实测单帧33个关键点的纯数值JSON载荷大小不到300字节,普通局域网环境下传输延迟完全可以满足实时姿态绘制的要求,不需要额外做数据压缩。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:51:27