ボディ フレームのデータにアクセスする
この記事では、ボディ フレームに含まれるデータと、そのデータにアクセスするための関数について説明します。
次の関数を扱っています。
- 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 のボディ インデックス マップ、およびその結果を生成した入力キャプチャが含まれます。
ボディ構造体のコレクションへのアクセス
1 つのキャプチャから複数のボディが検出される場合があります。 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);