访问人体帧中的数据
本文介绍正文框架中包含的数据,以及用于访问这些数据的函数。
本文将介绍以下函数:
- k4abt_frame_get_body_id()
- k4abt_frame_get_body_index_map()
- k4abt_frame_get_body_skeleton()
- k4abt_frame_get_capture()
- k4abt_frame_get_num_bodies()
- k4abt_frame_get_device_timestamp_usec()
人体帧的关键组成部分
每个人体帧包含人体结构的集合、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);