Share via


Azure Kinect görüntü verilerini alma

Bu sayfada Azure Kinect'ten görüntü alma hakkında ayrıntılı bilgi sağlanır. Makalede, cihazın rengi ve derinliği arasında eşgüdümlü görüntüleri yakalama ve bu görüntülere erişme işlemleri gösterilmektedir. Görüntülere erişmek için önce cihazı açıp yapılandırmanız gerekir, ardından görüntüleri yakalayabilirsiniz. Bir görüntüyü yapılandırmadan ve yakalamadan önce Cihazı bulup açmanız gerekir.

Bu makaledeki işlevlerin nasıl kullanılacağını gösteren SDK Akış Örneği'ne de bakabilirsiniz.

Aşağıdaki işlevler ele alınmıştır:

Cihazı yapılandırma ve başlatma

Kinect cihazınızda bulunan iki kamera birden çok modu, çözünürlüğü ve çıkış biçimlerini destekler. Tam liste için Bkz. Azure Kinect Geliştirme Seti donanım belirtimleri.

Akış yapılandırması, yapıdaki k4a_device_configuration_t değerler kullanılarak ayarlanır.

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;
}

Kameralar başlatıldıktan sonra çağrılana veya cihaz kapatılana kadar k4a_device_stop_cameras() verileri yakalamaya devam ederler.

Sabitleme

Çoklu cihaz eşitleme özelliğini kullanarak cihazları başlatırken, bunu sabit bir pozlama ayarı kullanarak yapmanız kesinlikle önerilir. El ile pozlama kümesiyle, görüntüler ve kare hızı sabitlenmeden önce cihazdan sekize kadar yakalama alabilir. Otomatik pozlama ile, görüntülerin ve kare hızının sabitlenmesinin 20'ye kadar yakalanması gerekir.

Cihazdan yakalama alma

Görüntüler cihazdan bağıntılı bir şekilde yakalanır. Yakalanan her görüntü bir derinlik görüntüsü, bir IR görüntüsü, bir renkli görüntü veya görüntülerin bir bileşimini içerir.

Varsayılan olarak, API yalnızca akış modu için istenen tüm görüntüleri aldıktan sonra yakalama döndürür. API'yi, parametresini k4a_device_configuration_ttemizleyerek synchronized_images_only yalnızca derinlik veya renk görüntüleri kullanılabilir duruma gelir gelmez kısmi yakalamalar döndürecek şekilde yapılandırabilirsiniz.

// 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;
}

API bir yakalamayı başarıyla döndürdükten sonra yakalama nesnesini kullanarak işlemi tamamladığınızda çağırmanız k4a_capture_release() gerekir.

Yakalamadan görüntü alma

Yakalanan bir görüntüyü almak için her görüntü türü için uygun işlevi çağırın. Bunlardan biri:

Görüntüyü kullanmayı bitirdikten sonra bu işlevler tarafından döndürülen tanıtıcıları k4a_image_t çağırmanız k4a_image_release() gerekir.

Access görüntü arabellekleri

k4a_image_t görüntünün özelliklerini almak için birçok erişimci işlevine sahiptir.

Görüntünün bellek arabelleğine erişmek için k4a_image_get_buffer kullanın.

Aşağıdaki örnekte, yakalanan derinlik görüntüsüne nasıl erişilmiş olduğu gösterilmektedir. Bu ilke diğer görüntü türleri için de geçerlidir. Ancak, görüntü türü değişkenini IR veya renk gibi doğru görüntü türüyle değiştirdiğinizden emin olun.

// 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);

Sonraki adımlar

Artık Azure Kinect cihazınızı kullanarak kameraların görüntülerini renk ve derinlik arasında nasıl yakalayabileceğinizi ve koordine ettiğinizi biliyorsunuz. Ayrıca şunları da yapabilirsiniz: