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:
k4a_device_get_installed_count()
k4a_device_open()
k4a_device_get_serialnum()
k4a_device_start_cameras()
k4a_device_stop_cameras()
k4a_device_close()
Önkoşullar
- Azure Kinect DK cihazını ayarlayın.
- 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.h
da 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_t
veya gibi k4a_wait_result_t
ayrı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