Zugreifen auf Daten im Body-Frame

In diesem Artikel werden die in einem Körperframe enthaltenen Daten und die Funktionen für den Zugriff auf diese Daten behandelt.

Die folgenden Funktionen werden behandelt:

Hauptkomponenten eines Körperframes

Jeder Körperframe enthält eine Sammlung von Körperstrukturen, eine 2D-Körperindexkarte und die Eingabeaufzeichnung, die dieses Ergebnis generiert hat.

Komponenten eines Körperframes

Zugreifen auf die Sammlung von Körperstrukturen

In einer einzelnen Aufzeichnung werden möglicherweise mehrere Körper erkannt. Sie können die Anzahl von Körpern abfragen, indem Sie die Funktion k4abt_frame_get_num_bodies() aufrufen.

size_t num_bodies = k4abt_frame_get_num_bodies(body_frame);

Sie verwenden die Funktionen k4abt_frame_get_body_id() und k4abt_frame_get_body_skeleton(), um jeden Körperindex zu durchlaufen, um die jeweilige Körper-ID und Informationen zur Position/Ausrichtung der Gelenke zu erhalten.

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);
}

Zugreifen auf die Körperindexkarte

Sie verwenden die Funktion k4abt_frame_get_body_index_map(), um auf die Körperindexkarte zuzugreifen. Ausführliche Erläuterungen zur Körperindexkarte finden Sie unter Azure Kinect-Körpertracking-Indexkarte. Stellen Sie sicher, dass Sie die Körperindexkarte freigegeben, wenn sie nicht mehr benötigt wird.

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);

Zugreifen auf die Eingabeaufzeichnung

Der Körper-Tracker ist eine asynchrone API. Die ursprüngliche Aufzeichnung wurde möglicherweise bereits freigegeben, wenn das Ergebnis per Pop entfernt wird. Verwenden Sie die Funktion k4abt_frame_get_capture(), um die Eingabeaufzeichnung abzufragen, mit der dieses Körpertrackingergebnis generiert wurde. Die Verweisanzahl für k4a_capture_t erhöht sich bei jedem Aufruf dieser Funktion. Verwenden Sie die Funktion k4a_capture_release(), wenn die Aufzeichnung nicht mehr benötigt wird.

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

Nächste Schritte