Accedere ai dati nel frame del corpo

Questo articolo descrive i dati contenuti in un fotogramma del corpo e le funzioni per accedere a tali dati.

Vengono illustrate le funzioni seguenti:

Componenti chiave di un fotogramma del corpo

Ogni fotogramma del corpo contiene una raccolta di struct del corpo, una mappa dell’indice del corpo in 2D e l'acquisizione di input che l’ha generata.

Body Frame Components

Accedere alla raccolta di struct del corpo

È possibile rilevare più corpi in una singola acquisizione. È possibile eseguire una query sul numero di corpi eseguendo la chiamata della funzione k4abt_frame_get_num_bodies(). .

size_t num_bodies = k4abt_frame_get_num_bodies(body_frame);

Usare le funzioni k4abt_frame_get_body_id() e k4abt_frame_get_body_skeleton() per eseguire l’iterazione di ogni indice del corpo e per trovare l'ID corpo e le informazioni sulla posizione/orientamento delle articolazioni.

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

Accedere alla mappa dell'indice del corpo

Usare la funzione k4abt_frame_get_body_index_map() per accedere alla mappa dell'indice del corpo. Fare riferimento alla mappa dell'indice del corpo per una spiegazione dettagliata della mappa dell'indice del corpo. Assicurarsi di creare la versione della mappa dell'indice del corpo quando non è più necessaria.

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

Accedere all'acquisizione di input

Lo strumento di rilevamento del corpo è un'API asincrona. Nel momento in cui si estrae il risultato è stata già stata creata la versione dell'acquisizione originale. Usare la funzione k4abt_frame_get_capture() per eseguire una query sull'acquisizione di input usata per generare questo risultato di rilevamento del corpo. Il conteggio dei riferimenti per k4a_capture_t è aumentato ogni volta che viene eseguita la chiamata di questa funzione. Usare la funzione k4a_capture_release() quando l'acquisizione non è più necessaria.

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

Passaggi successivi