Получение доступа к данным о корпусе
В этой статье описываются данные, содержащиеся в кадре тела, а также функции доступа к этим данным.
Рассматриваются следующие функции:
- 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()
Основные компоненты текстового фрейма
Каждый кадр тела содержит коллекцию структур тела, двумерную схему индекса тела и захват введенных данных, дающий этот результат.
Доступ к коллекции структур тела
В одном захвате может быть обнаружено несколько тел. Несколько тел можно запросить, вызвав функцию 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() используются для итерации по каждому индексу тела, чтобы найти идентификатор тела и связать с ним сведения о положении или ориентации.
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);