Gegevens in kader openen
In dit artikel worden de gegevens in een hoofdtekstframe en de functies voor toegang tot die gegevens beschreven.
De volgende functies worden behandeld:
- 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()
Belangrijkste onderdelen van een bodyframe
Elk hoofdframe bevat een verzameling body-structs, een 2D-hoofdindextoewijzing en de invoeropname die dit resultaat heeft gegenereerd.
Toegang tot de verzameling body-structs
Er kunnen meerdere lichamen worden gedetecteerd in één opname. U kunt een query uitvoeren op het aantal lichamen door de functie k4abt_frame_get_num_bodies() aan te roepen.
size_t num_bodies = k4abt_frame_get_num_bodies(body_frame);
U gebruikt de functies k4abt_frame_get_body_id() en k4abt_frame_get_body_skeleton() om elke hoofdindex te doorlopen om de body-id en informatie over de gezamenlijke positie/oriëntatie te vinden.
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);
}
Toegang tot de hoofdindextoewijzing
U gebruikt de functie k4abt_frame_get_body_index_map() voor toegang tot de hoofdindextoewijzing. Raadpleeg de hoofdindexkaart voor gedetailleerde uitleg van de hoofdindexkaart. Zorg ervoor dat u de hoofdindextoewijzing loslaat wanneer deze niet meer nodig is.
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);
Toegang tot de invoeropname
De bodytracker is een asynchrone API. De oorspronkelijke opname is mogelijk al uitgebracht op het moment dat het resultaat wordt weergegeven. Gebruik de functie k4abt_frame_get_capture() om een query uit te voeren op de invoeropname die wordt gebruikt om dit resultaat voor het bijhouden van lichamen te genereren. Het aantal verwijzingen voor de k4a_capture_t wordt verhoogd telkens wanneer deze functie wordt aangeroepen. Gebruik de functie k4a_capture_release() wanneer de opname niet meer nodig is.
k4a_capture_t input_capture = k4abt_frame_get_capture(body_frame);
... // Do your work with the input capture
k4a_capture_release(input_capture);