你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

访问人体帧中的数据

本文介绍正文框架中包含的数据,以及用于访问这些数据的函数。

本文将介绍以下函数:

人体帧的关键组成部分

每个人体帧包含人体结构的集合、2D 人体索引映射,以及生成了此结果的输入捕获。

人体帧的组成部分

访问人体结构的集合

在单个捕获中可能会检测到多个人体。 可以调用 k4abt_frame_get_num_bodies() 函数查询人体数目。

size_t num_bodies = k4abt_frame_get_num_bodies(body_frame);

使用 k4abt_frame_get_body_id()k4abt_frame_get_body_skeleton() 函数可以循环访问每个人体索引,以查找人体 ID 和关节位置/方向信息。

for (size_t i = 0; i < num_bodies; i++)
{
    k4abt_skeleton_t skeleton;
    k4abt_frame_get_body_skeleton(body_frame, i, &skeleton);
    uint32_t id = k4abt_frame_get_body_id(body_frame, i);
}

访问人体索引映射

使用 k4abt_frame_get_body_index_map() 函数可以访问人体索引映射。 有关人体索引映射的详细说明,请参阅人体索引映射。 不再需要人体索引映射时,请务必将其释放。

k4a_image_t body_index_map = k4abt_frame_get_body_index_map(body_frame);
...  // Do your work with the body index map
k4a_image_release(body_index_map);

访问输入捕获

人体跟踪器是一个异步 API。 弹出结果时,可能已释放原始捕获。 使用 k4abt_frame_get_capture() 函数可以查询用于生成此人体跟踪结果的输入捕获。 每次调用此函数,k4a_capture_t 的引用计数就会递增。 不再需要捕获时,请使用 k4a_capture_release() 函数。

k4a_capture_t input_capture = k4abt_frame_get_capture(body_frame);
... // Do your work with the input capture
k4a_capture_release(input_capture);

后续步骤