Afbeeldingsgegevens van Azure Kinect ophalen
Op deze pagina vindt u informatie over het ophalen van afbeeldingen uit Azure Kinect. Het artikel laat zien hoe u afbeeldingen kunt vastleggen en openen die zijn gecoördineerd tussen de kleur en diepte van het apparaat. Als u toegang wilt krijgen tot afbeeldingen, moet u eerst het apparaat openen en configureren. Vervolgens kunt u afbeeldingen vastleggen. Voordat u een installatiekopieën configureert en vastlegt, moet u het apparaat zoeken en openen.
U kunt ook verwijzen naar het SDK Streaming-voorbeeld dat laat zien hoe u de functies in dit artikel kunt gebruiken.
De volgende functies worden behandeld:
k4a_device_start_cameras()
k4a_device_get_capture()
k4a_capture_get_depth_image()
k4a_image_get_buffer()
k4a_image_release()
k4a_capture_release()
k4a_device_stop_cameras()
Het apparaat configureren en starten
De twee camera's die beschikbaar zijn op uw Kinect-apparaat ondersteunen meerdere modi, resoluties en uitvoerindelingen. Raadpleeg de hardwarespecificaties van de Azure Kinect Development Kit voor een volledige lijst.
De streamingconfiguratie wordt ingesteld met behulp van waarden in de k4a_device_configuration_t
structuur.
k4a_device_configuration_t config = K4A_DEVICE_CONFIG_INIT_DISABLE_ALL;
config.camera_fps = K4A_FRAMES_PER_SECOND_30;
config.color_format = K4A_IMAGE_FORMAT_COLOR_MJPG;
config.color_resolution = K4A_COLOR_RESOLUTION_2160P;
config.depth_mode = K4A_DEPTH_MODE_NFOV_UNBINNED;
if (K4A_RESULT_SUCCEEDED != k4a_device_start_cameras(device, &config))
{
printf("Failed to start device\n");
goto Exit;
}
Zodra camera's zijn gestart, blijven ze gegevens vastleggen totdat k4a_device_stop_cameras()
ze worden aangeroepen of het apparaat wordt gesloten.
Stabilisatie
Wanneer u apparaten start met de functie voor synchronisatie van meerdere apparaten, wordt u ten zeerste aangeraden dit te doen met behulp van een instelling voor vaste blootstelling. Met een handmatige belichtingsset kan het tot acht opnamen van het apparaat duren voordat afbeeldingen en framerate stabiliseren. Bij automatische belichting kan het tot 20 opnamen duren voordat afbeeldingen en framerate stabiliseren.
Een opname ophalen van het apparaat
Afbeeldingen worden op een gecorreleerde manier vastgelegd vanaf het apparaat. Elke vastgelegde afbeelding bevat een diepteafbeelding, een IR-afbeelding, een kleurenafbeelding of een combinatie van afbeeldingen.
Standaard retourneert de API alleen een opname zodra deze alle aangevraagde installatiekopieën voor de streamingmodus heeft ontvangen. U kunt de API zo configureren dat gedeeltelijke opnamen met alleen diepte- of kleurafbeeldingen worden geretourneerd zodra ze beschikbaar zijn door de synchronized_images_only
parameter van de k4a_device_configuration_t
.
// Capture a depth frame
k4a_capture_t capture = NULL;
switch (k4a_device_get_capture(device, &capture, TIMEOUT_IN_MS))
{
case K4A_WAIT_RESULT_SUCCEEDED:
break;
case K4A_WAIT_RESULT_TIMEOUT:
printf("Timed out waiting for a capture\n");
continue;
break;
case K4A_WAIT_RESULT_FAILED:
printf("Failed to read a capture\n");
goto Exit;
}
Zodra de API een opname heeft geretourneerd, moet u aanroepen k4a_capture_release()
wanneer u klaar bent met het capture-object.
Een afbeelding ophalen uit de opname
Als u een vastgelegde installatiekopie wilt ophalen, roept u de juiste functie aan voor elk afbeeldingstype. Een van de volgende:
U moet elke k4a_image_t
ingang aanroepen k4a_image_release()
die door deze functies wordt geretourneerd zodra u klaar bent met het gebruik van de installatiekopieën.
Toegang tot afbeeldingsbuffers
k4a_image_t
heeft veel accessorfuncties om eigenschappen van de afbeelding op te halen.
Gebruik k4a_image_get_buffer om toegang te krijgen tot de geheugenbuffer van de installatiekopieën.
In het volgende voorbeeld ziet u hoe u toegang hebt tot een vastgelegde diepteafbeelding. Hetzelfde principe is van toepassing op andere afbeeldingstypen. Zorg er echter voor dat u de variabele voor het afbeeldingstype vervangt door het juiste afbeeldingstype, zoals IR of kleur.
// Access the depth16 image
k4a_image_t image = k4a_capture_get_depth_image(capture);
if (image != NULL)
{
printf(" | Depth16 res:%4dx%4d stride:%5d\n",
k4a_image_get_height_pixels(image),
k4a_image_get_width_pixels(image),
k4a_image_get_stride_bytes(image));
// Release the image
k4a_image_release(image);
}
// Release the capture
k4a_capture_release(capture);
Volgende stappen
U weet nu hoe u de foto's van de camera's kunt vastleggen en coördineren tussen de kleur en diepte, met behulp van uw Azure Kinect-apparaat. U kunt ook het volgende doen: