Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ta strona zawiera szczegółowe informacje na temat pobierania obrazów z zestawu Azure Kinect. W tym artykule pokazano, jak przechwytywać i uzyskiwać dostęp do obrazów skoordynowanych między kolorem i głębią urządzenia. Aby uzyskać dostęp do obrazów, musisz najpierw otworzyć i skonfigurować urządzenie, a następnie przechwycić obrazy. Zanim skonfigurujesz i przechwycisz obraz, musisz znaleźć i otworzyć urządzenie.
Możesz również zapoznać się z przykładem przesyłania strumieniowego SDK , który pokazuje, jak używać funkcji w tym artykule.
Omówiono następujące funkcje:
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()
Konfigurowanie i uruchamianie urządzenia
Dwie kamery dostępne na urządzeniu Kinect obsługują wiele trybów, rozdzielczości i formatów wyjściowych. Pełną listę znajdziesz w specyfikacjach sprzętowych Azure Kinect Development Kit .
Konfiguracja przesyłania strumieniowego jest ustawiana przy użyciu wartości w strukturze 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 uruchomieniu aparatów będą one nadal rejestrować dane do momentu wywołania k4a_device_stop_cameras() lub zamknięcia urządzenia.
Stabilizacja
Podczas uruchamiania urządzeń przy użyciu funkcji synchronizacji wielu urządzeń zdecydowanie zaleca się użycie ustawienia stałej ekspozycji. W przypadku ustawienia ekspozycji ręcznej może być wykonanych do ośmiu zdjęć z urządzenia, zanim obrazy i liczba klatek na sekundę się ustabilizują. Dzięki automatycznej ekspozycji może upłynąć do 20 przechwyceń, zanim obrazy oraz szybkość klatek się ustabilizują.
Uzyskaj zrzut ekranu z urządzenia
Obrazy są przechwytywane z urządzenia w skorelowany sposób. Każdy przechwycony obraz zawiera obraz głębokości, obraz IR, obraz koloru lub kombinację obrazów.
Domyślnie interfejs API zwróci przechwycenie tylko po odebraniu wszystkich żądanych obrazów w trybie przesyłania strumieniowego. Interfejs API można skonfigurować tak, aby zwracał częściowe obrazy, zawierające tylko obraz głębi lub koloru, gdy tylko będą dostępne, poprzez wyczyszczenie parametru synchronized_images_only urządzenia 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;
}
Gdy interfejs API pomyślnie zwróci zapis, należy wywołać k4a_capture_release() po zakończeniu korzystania z obiektu capture.
Pobieranie obrazu z przechwytywania
Aby pobrać przechwycony obraz, wywołaj odpowiednią funkcję dla każdego typu obrazu. Jeden z:
Po zakończeniu korzystania z obrazu należy wywołać k4a_image_release() na dowolnym k4a_image_t dojściu zwróconym przez te funkcje.
Uzyskiwanie dostępu do buforów obrazu
k4a_image_t ma wiele funkcji dostępu do uzyskania właściwości obrazu.
Aby uzyskać dostęp do buforu pamięci obrazu, użyj k4a_image_get_buffer.
W poniższym przykładzie pokazano, jak uzyskać dostęp do przechwyconego obrazu głębokości. Ta sama zasada dotyczy innych typów obrazów. Pamiętaj jednak, aby zastąpić zmienną typu obrazu poprawnym rodzajem obrazu, takim jak IR lub kolor.
// 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);
Następne kroki
Teraz wiesz, jak przechwytywać i koordynować obrazy kamer między kolorem i głębią, korzystając z urządzenia Azure Kinect. Możesz również wykonywać następujące czynności: