跳到主要内容

7.5 手部识别数据

EGO1GS 开启手部识别后,识别结果作为一路独立频道 /ego/camera/0/annotations 与画面一起录进 .mcap。本页说明它携带什么、怎么看、怎么读。

频道内容​

  • 每只识别到的手一个方框,并区分左手 / 右手。
  • 标注挂在相机 0(右目)上,与 /ego/camera/0 共用同一条时间轴,可以直接按时间戳对齐到视频帧。
  • 识别的是佩戴者自己的手;不保证会忽略画面中其他人的手。光线过暗、手被完全遮挡或只露出很小一部分时可能识别不到,这属于正常情况。
  • 关闭手部识别时该频道不存在;EGO1 的录制中也没有。使用方必须容忍其缺失。

在 Foxglove / visio-display 中叠加显示​

在 Foxglove Studio 里把图像面板的 topic 设为 /ego/camera/0,标注 topic 会作为可叠加的图层出现,勾选即可在视频上画框。visio-display 仅在实时转发到 Foxglove 时显示方框;文件回放请直接在 Foxglove 中打开 .mcap(左手绿色、右手青色)。

用 Python 读取​

Schema 为 foxglove.ImageAnnotations,内嵌在文件里,按 channel.schema_name 解码即可,不需要事先知道类型名:

from visio_schema import read_mcap, message_class

for msg, channel in read_mcap("capture.mcap"):
if channel.topic == "/ego/camera/0/annotations":
ann = message_class(channel.schema_name)()
ann.ParseFromString(msg.payload)
print(ann) # 每只手的方框与左右手标签,时间戳与相机 0 同轴

要把框对应到具体的视频帧,用标注消息的时间戳在 /ego/camera/0 中找最近的帧;时间戳都是设备单调时钟,见 7.2。

相关​