Démarrage rapide : Créer votre première application Azure Kinect
Vous débutez avec Azure Kinect DK ? Ce guide de démarrage rapide va vous aider à devenir opérationnel avec l’appareil.
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Voici les fonctions qui sont abordées ici :
k4a_device_get_installed_count()
k4a_device_open()
k4a_device_get_serialnum()
k4a_device_start_cameras()
k4a_device_stop_cameras()
k4a_device_close()
Prérequis
- Configurer l’appareil Azure Kinect DK.
- Télécharger et installer le SDK Capteur d’Azure Kinect.
En-têtes
Le seul en-tête dont vous avez besoin est k4a.h
. Veillez à ce que le compilateur que vous avez choisi est configuré avec les dossiers lib et include du SDK. Vous devez aussi lier les fichiers k4a.lib
et k4a.dll
. Consultez éventuellement Ajouter la bibliothèque Azure Kinect à votre projet.
#include <k4a/k4a.h>
Rechercher un appareil Azure Kinect DK
Plusieurs appareils Azure Kinect DK peuvent être connectés à votre ordinateur. Nous allons commencer par déterminer leur nombre, si tant est qu’il y en ait, à l’aide de la fonction k4a_device_get_installed_count()
. Cette fonction doit en principe fonctionner directement, sans étapes de configuration supplémentaires.
uint32_t count = k4a_device_get_installed_count();
Dès lors que vous avez déterminé qu’un appareil est connecté à l’ordinateur, vous pouvez l’ouvrir avec k4a_device_open()
. Vous pouvez fournir l’index de l’appareil à ouvrir ou utiliser simplement K4A_DEVICE_DEFAULT
pour le premier.
// Open the first plugged in Kinect device
k4a_device_t device = NULL;
k4a_device_open(K4A_DEVICE_DEFAULT, &device);
Comme c’est généralement le cas avec la bibliothèque Azure Kinect, quand vous ouvrez un de ses composants, vous devez aussi le refermer après l’avoir utilisé. Pour cela, pensez à appeler k4a_device_close()
.
k4a_device_close(device);
Une fois l’appareil ouvert, vous pouvez le tester pour vérifier qu’il fonctionne. C’est le cas si vous pouvez lire le numéro de série de l’appareil.
// 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);
Démarrer les caméras
Une fois que vous avez ouvert l’appareil, vous devez configurer la caméra avec un objet k4a_device_configuration_t
. Il existe différentes options de configuration de la caméra. Choisissez les paramètres qui correspondent le mieux à votre propre scénario.
// 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);
Gestion des erreurs
Dans un souci de clarté et de concision, la gestion des erreurs n’apparaît pas dans les exemples fournis. Cependant, la gestion des erreurs est toujours importante ! De nombreuses fonctions peuvent retourner un type de réussite/échec général k4a_result_t
ou une variante plus spécifiques avec des informations détaillées comme k4a_wait_result_t
. Consultez la documentation ou IntelliSense pour chaque fonction de façon à vous faire une idée des messages d’erreur que vous êtes susceptible de rencontrer.
Vous pouvez utiliser les macros K4A_SUCCEEDED
et K4A_FAILED
pour vérifier le résultat d’une fonction. Au lieu d’ouvrir simplement un appareil Azure Kinect DK, vous pouvez protéger l’appel de fonction comme ceci :
// 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;
}
Source complète
#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;
}
Étapes suivantes
Découvrir comment rechercher et ouvrir un appareil Azure Kinect DK à l’aide du SDK Capteur