Guida introduttiva: Creare la prima applicazione di Azure Kinect

Introduzione ad Azure Kinect DK Questo argomento di avvio rapido consente di diventare immediatamente operativi con il dispositivo.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Vengono illustrate le funzioni seguenti:

Prerequisiti

  1. Configurare il dispositivo Azure Kinect DK.
  2. Scaricare e installare Azure Kinect Sensor SDK.

Intestazioni

È necessaria una sola intestazione, k4a.h. Assicurarsi che il compilatore scelto sia configurato con le cartelle lib e include dell'SDK. Sono anche necessari i file k4a.lib e k4a.dll collegati. È possibile vedere come aggiungere la libreria di Azure Kinect al progetto.

#include <k4a/k4a.h>

Ricerca di un dispositivo Azure Kinect DK

È possibile connettere più dispositivi Azure Kinect DK al computer. Per prima cosa, è necessario scoprire se e quanti dispositivi sono connessi usando la funzione k4a_device_get_installed_count(). Questa funzione dovrebbe funzionare immediatamente, senza alcuna configurazione aggiuntiva.

uint32_t count = k4a_device_get_installed_count();

Una volta stabilito che è presente un dispositivo connesso al computer, è possibile aprirlo usando k4a_device_open(). È possibile fornire l'indice del dispositivo da aprire oppure usare K4A_DEVICE_DEFAULT per il primo.

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

Come per quasi tutto quello che riguarda la libreria di Azure Kinect, quando si apre qualcosa è necessario chiuderlo al termine. Quando si esegue la chiusura, assicurarsi di effettuare una chiamata a k4a_device_close().

k4a_device_close(device);

Una volta aperto il dispositivo, eseguire un test per verificare se funziona. A questo punto, leggere il numero di serie del dispositivo.

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

Avvio delle videocamere

Dopo aver aperto il dispositivo, è necessario configurare la videocamera con un oggetto k4a_device_configuration_t. Per la configurazione della videocamera sono disponibili diverse opzioni. Scegliere le impostazioni più adatte per il proprio scenario.

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

Gestione degli errori

Per motivi di brevità e chiarezza, la gestione degli errori non viene mostrata in alcuni esempi inline. Tuttavia, la gestione degli errori è sempre importante. Molte funzioni restituiscono un tipo generale di esito positivo/negativo k4a_result_t o una variante più specifica con informazioni dettagliate, ad esempio k4a_wait_result_t. Controllare la documentazione o IntelliSense per ogni funzione per verificare quali messaggi di errore bisogna prevedere.

È possibile usare le macro K4A_SUCCEEDED e K4A_FAILED per verificare il risultato di una funzione. Quindi invece di aprire un dispositivo Azure Kinect DK, è possibile controllare la chiamata di funzione come segue:

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

Codice sorgente completo

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

Passaggi successivi

Informazioni su come trovare e aprire un dispositivo Azure Kinect DK con Sensor SDK