Načtení obrazových dat Azure Kinectu

Tato stránka obsahuje podrobnosti o tom, jak načíst obrázky z Azure Kinectu. Tento článek ukazuje, jak pořizovat 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 pořizovat obrázky. 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írané jsou následující funkce:

Konfigurace a spuštění zařízení

Dvě kamery dostupné na zařízení Kinect podporují více režimů, rozlišení a výstupních formátů. Ú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í budou kamery dál zaznamená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 s více zařízeními se důrazně doporučuje použít nastavení pevné expozice. S ruční sadou expozice může ze zařízení pořídit až osm snímků, než se snímky stabilizují a snímková frekvence. Při automatické expozici může trvat až 20 snímků, než se snímky a snímková frekvence stabilizuje.

Získání záznamu ze zařízení

Obrázky jsou zachyceny ze zařízení korelačním způsobem. Každý pořízený obrázek obsahuje hloubkový obrázek, ir obrázek, barevný obrázek nebo kombinaci obrázků.

Ve výchozím nastavení vrátí rozhraní API záznam pouze po přijetí všech požadovaných imagí pro režim streamování. Jakmile budou k dispozici, můžete rozhraní API nakonfigurovat tak, aby vracela pouze částečné snímky s hloubkou nebo barvami, a to vymazáním parametru synchronized_images_onlyk4a_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 po dokončení použití objektu capture volat k4a_capture_release() .

Získání obrázku ze záznamu

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žíváním image, musíte volat k4a_image_release() jakýkoli k4a_image_t popisovač vrácený těmito funkcemi.

Vyrovnávací paměti imagí aplikace Access

k4a_image_t má mnoho funkcí pro přístup k získání vlastností obrázku.

Pokud chcete získat 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 platí i pro jiné typy imagí. Nezapomeňte ale proměnnou typu obrázku nahradit 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 pomocí zařízení Azure Kinect pořizovat a koordinovat snímky fotoaparátů mezi barvou a hloubkou. Můžete také: