Načtení dat obrázků v Azure Kinectu
Tato stránka obsahuje podrobnosti o tom, jak načíst obrázky z Azure Kinectu. Článek ukazuje, jak zachytit a přistupovat k obrázkům koordinovaným mezi barvou a hloubkou zařízení. Pokud chcete získat přístup k imagím, musíte nejprve otevřít a nakonfigurovat zařízení a pak můžete zachytit image. Než nakonfigurujete a zachytíte image, musíte najít a otevřít zařízení.
Můžete se také podívat na příklad streamování sady SDK, který ukazuje, jak používat funkce v tomto článku.
Probíráme následující funkce:
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()
Konfigurace a spuštění zařízení
Dva kamery dostupné na vašem zařízení Kinect podporují více režimů, rozlišení a výstupní formáty. Úplný seznam najdete v hardwarových specifikacích sady Azure Kinect Development Kit.
Konfigurace streamování se nastavuje pomocí hodnot ve struktuře k4a_device_configuration_t
.
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;
}
Po spuštění fotoaparátů budou dál zachytávat data, dokud k4a_device_stop_cameras()
se nezavolají nebo se zařízení nezavře.
Stabilizace
Při spouštění zařízení pomocí funkce synchronizace více zařízení se důrazně doporučuje použít pevné nastavení expozice. Při ruční sadě expozice může trvat až osm snímků ze zařízení před stabilizací snímků a snímkovou rychlostí. Při automatické expozici může trvat až 20 snímků před stabilizací snímků a snímkovou rychlostí.
Získání zachycení ze zařízení
Obrázky se ze zařízení zaznamenávají korelovaným způsobem. Každý zachycený obrázek obsahuje podrobný obrázek, obrázek PROSTŘEDÍ IR, barevný obrázek nebo kombinaci obrázků.
Ve výchozím nastavení rozhraní API vrátí zachytávání jenom po přijetí všech požadovaných imagí pro režim streamování. Rozhraní API můžete nakonfigurovat tak, aby vracela částečné zachytávání pouze s hloubkou nebo barevnými obrázky, jakmile budou k dispozici, vymazáním synchronized_images_only
parametru 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;
}
Jakmile rozhraní API úspěšně vrátí zachytávání, musíte volat k4a_capture_release()
, až dokončíte použití objektu capture.
Získání obrázku z zachycení
Pokud chcete načíst zachycený obrázek, zavolejte příslušnou funkci pro každý typ obrázku. Jedna z těchto možností:
Jakmile budete hotovi s použitím obrázku, musíte volat k4a_image_release()
jakýkoli k4a_image_t
popisovač vrácený těmito funkcemi.
Přístup k vyrovnávacím pamětím obrázků
k4a_image_t
má mnoho přístupových funkcí pro získání vlastností image.
Pro přístup k vyrovnávací paměti image použijte k4a_image_get_buffer.
Následující příklad ukazuje, jak získat přístup k zachycené hloubkové imagi. Stejný princip se vztahuje na jiné typy imagí. Ujistěte se ale, že proměnnou typu obrázku nahradíte správným typem obrázku, například ir nebo barvou.
// 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);
Další kroky
Teď víte, jak zachytit a koordinovat snímky fotoaparátů mezi barvou a hloubkou pomocí zařízení Azure Kinect. Můžete také: