Hızlı Başlangıç: İlk Azure Kinect uygulamanızı oluşturma

Azure Kinect DK'yi kullanmaya mı başlıyorsunuz? Bu hızlı başlangıç, cihazla çalışmaya başlamanızı sağlayacak!

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

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

Önkoşullar

  1. Azure Kinect DK cihazını ayarlayın.
  2. Azure Kinect Algılayıcı SDK'sını indirip yükleyin.

Üst Bilgiler

İhtiyacınız olan tek bir üst bilgi vardır ve bu k4a.hda olur. Seçtiğiniz derleyicinin SDK'nın kitaplığıyla ayarlandığından ve klasörleri eklediğinizden emin olun. Ayrıca ve k4a.dll dosyalarının k4a.lib da bağlı olması gerekir. Azure Kinect kitaplığını projenize eklemeye başvurmak isteyebilirsiniz.

#include <k4a/k4a.h>

Azure Kinect DK cihazı bulma

Bilgisayarınıza birden çok Azure Kinect DK cihazı bağlanabilir. öncelikle işlevini kullanarak k4a_device_get_installed_count() kaç kişi olduğunu veya herhangi birinin bağlı olup olmadığını öğrenerek başlayacağız. Bu işlev, ek kurulum olmadan hemen çalışmalıdır.

uint32_t count = k4a_device_get_installed_count();

Bilgisayara bağlı bir cihaz olduğunu belirledikten sonra kullanarak k4a_device_open()açabilirsiniz. Açmak istediğiniz cihazın dizinini sağlayabilir veya yalnızca ilki için kullanabilirsiniz K4A_DEVICE_DEFAULT .

// Open the first plugged in Kinect device
k4a_device_t device = NULL;
k4a_device_open(K4A_DEVICE_DEFAULT, &device);

Azure Kinect kitaplığındaki çoğu şeyde olduğu gibi, bir şeyi açtığınızda da bitirdiğinizde kapatmalısınız! Kapattığınızda çağrısı yapmayı k4a_device_close()unutmayın.

k4a_device_close(device);

Cihaz açıldıktan sonra çalıştığından emin olmak için bir test gerçekleştirebiliriz. Şimdi cihazın seri numarasını okuyalım!

// Get the size of the serial number
size_t serial_size = 0;
k4a_device_get_serialnum(device, NULL, &serial_size);

// Allocate memory for the serial, then acquire it
char *serial = (char*)(malloc(serial_size));
k4a_device_get_serialnum(device, serial, &serial_size);
printf("Opened device: %s\n", serial);
free(serial);

Kameraları başlatma

Cihazı açtıktan sonra kamerayı bir k4a_device_configuration_t nesneyle yapılandırmanız gerekir. Kamera yapılandırmasının bir dizi farklı seçeneği vardır. Kendi senaryonuza en uygun ayarları seçin.

// Configure a stream of 4096x3072 BRGA color data at 15 frames per second
k4a_device_configuration_t config = K4A_DEVICE_CONFIG_INIT_DISABLE_ALL;
config.camera_fps       = K4A_FRAMES_PER_SECOND_15;
config.color_format     = K4A_IMAGE_FORMAT_COLOR_BGRA32;
config.color_resolution = K4A_COLOR_RESOLUTION_3072P;

// Start the camera with the given configuration
k4a_device_start_cameras(device, &config);

// ...Camera capture and application specific code would go here...

// Shut down the camera when finished with application logic
k4a_device_stop_cameras(device);

Hata işleme

Kısa ve netlik açısından bazı satır içi örneklerde hata işlemeyi göstermiyoruz. Ancak hata işleme her zaman önemlidir! Birçok işlev genel bir başarı/başarısızlık türü k4a_result_tveya gibi k4a_wait_result_tayrıntılı bilgiler içeren daha belirli bir değişken döndürür. Her işlev için belgeleri veya IntelliSense'i kontrol edin ve bu işlevden hangi hata iletilerini görmeyi beklemeniz gerektiğini görün!

bir işlevin K4A_SUCCEEDED sonucunu denetlemek için ve K4A_FAILED makrolarını kullanabilirsiniz. Bu nedenle bir Azure Kinect DK cihazı açmak yerine işlev çağrısını şu şekilde koruyabiliriz:

// Open the first plugged in Kinect device
k4a_device_t device = NULL;
if ( K4A_FAILED( k4a_device_open(K4A_DEVICE_DEFAULT, &device) ) )
{
    printf("Failed to open k4a device!\n");
    return;
}

Tam kaynak

#pragma comment(lib, "k4a.lib")
#include <k4a/k4a.h>

#include <stdio.h>
#include <stdlib.h>

int main()
{
    uint32_t count = k4a_device_get_installed_count();
    if (count == 0)
    {
        printf("No k4a devices attached!\n");
        return 1;
    }

    // Open the first plugged in Kinect device
    k4a_device_t device = NULL;
    if (K4A_FAILED(k4a_device_open(K4A_DEVICE_DEFAULT, &device)))
    {
        printf("Failed to open k4a device!\n");
        return 1;
    }

    // Get the size of the serial number
    size_t serial_size = 0;
    k4a_device_get_serialnum(device, NULL, &serial_size);

    // Allocate memory for the serial, then acquire it
    char *serial = (char*)(malloc(serial_size));
    k4a_device_get_serialnum(device, serial, &serial_size);
    printf("Opened device: %s\n", serial);
    free(serial);

    // Configure a stream of 4096x3072 BRGA color data at 15 frames per second
    k4a_device_configuration_t config = K4A_DEVICE_CONFIG_INIT_DISABLE_ALL;
    config.camera_fps       = K4A_FRAMES_PER_SECOND_15;
    config.color_format     = K4A_IMAGE_FORMAT_COLOR_BGRA32;
    config.color_resolution = K4A_COLOR_RESOLUTION_3072P;

    // Start the camera with the given configuration
    if (K4A_FAILED(k4a_device_start_cameras(device, &config)))
    {
        printf("Failed to start cameras!\n");
        k4a_device_close(device);
        return 1;
    }

    // Camera capture and application specific code would go here

    // Shut down the camera when finished with application logic
    k4a_device_stop_cameras(device);
    k4a_device_close(device);

    return 0;
}

Sonraki adımlar

Algılayıcı SDK'sını kullanarak Azure Kinect DK cihazını bulmayı ve açmayı öğrenin