Azure ınect cihazını bulun ve açın

Bu makalede, Azure Kinect DK 'nizi nasıl bulabileceğiniz açıklanır. Makalesinde, makinenize bağlı birden çok cihazın bulunduğu durumun nasıl işleneceği açıklanır.

Ayrıca, bu makaledeki işlevlerin nasıl kullanılacağını gösteren SDK listeleme örneğine de başvurabilirsiniz.

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

Bağlı cihazların sayısını bulma

İlk olarak, şu anda bağlı olan Azure Kinect cihazlarının sayısını kullanarak alın k4a_device_get_installed_count() .

uint32_t device_count = k4a_device_get_installed_count();

printf("Found %d connected devices:\n", device_count);

Bir cihaz açın

Bir cihaz hakkında bilgi almak ya da verileri buradan okumak için, önce kullanarak cihaza bir tanıtıcı açmanız gerekir k4a_device_open() .

k4a_device_t device = NULL;

for (uint8_t deviceIndex = 0; deviceIndex < device_count; deviceIndex++)
{
    if (K4A_RESULT_SUCCEEDED != k4a_device_open(deviceIndex, &device))
    {
        printf("%d: Failed to open device\n", deviceIndex);
        continue;
    }

    ...

    k4a_device_close(device);
}

indexParametresi, birden k4a_device_open() fazla bağlı varsa hangi cihazın açılacağını gösterir. Yalnızca tek bir cihazın bağlanmasını düşünüyorsanız, K4A_DEVICE_DEFAULT ilk aygıtı göstermek için veya 0 bağımsız değişkenini geçirebilirsiniz.

Tanıtıcıyı kullanarak işiniz bittiğinde çağırmanız gereken her zaman bir cihaz Açarsınız k4a_device_close() . Tanıtıcıyı kapatıncaya kadar aynı cihaza başka bir tanıtıcı açılamaz.

Belirli bir cihazı tanımla

Cihazların dizine göre numaralandırılacağı sıralama, cihazlar iliştirilene veya ayrılana kadar değişmez. Fiziksel bir cihazı tanımlamak için cihazın seri numarasını kullanmanız gerekir.

Cihazdan seri numarasını okumak için, k4a_device_get_serialnum() bir tanıtıcıyı açtıktan sonra işlevini kullanın.

Bu örnek, seri numarasını depolamak için doğru bellek miktarının nasıl ayrılacağını gösterir.

char *serial_number = NULL;
size_t serial_number_length = 0;

if (K4A_BUFFER_RESULT_TOO_SMALL != k4a_device_get_serialnum(device, NULL, &serial_number_length))
{
    printf("%d: Failed to get serial number length\n", deviceIndex);
    k4a_device_close(device);
    device = NULL;
    continue;
}

serial_number = malloc(serial_number_length);
if (serial_number == NULL)
{
    printf("%d: Failed to allocate memory for serial number (%zu bytes)\n", deviceIndex, serial_number_length);
    k4a_device_close(device);
    device = NULL;
    continue;
}

if (K4A_BUFFER_RESULT_SUCCEEDED != k4a_device_get_serialnum(device, serial_number, &serial_number_length))
{
    printf("%d: Failed to get serial number\n", deviceIndex);
    free(serial_number);
    serial_number = NULL;
    k4a_device_close(device);
    device = NULL;
    continue;
}

printf("%d: Device \"%s\"\n", deviceIndex, serial_number);

Varsayılan cihazı aç

Çoğu uygulamada, aynı bilgisayara yalnızca tek bir Azure Kinect DK eklenmiş olur. Yalnızca tek bir beklenen cihaza bağlanmanız gerekiyorsa, k4a_device_open() index K4A_DEVICE_DEFAULT ilk cihazı açmak için ile ile arama yapabilirsiniz.

k4a_device_t device = NULL;
uint32_t device_count = k4a_device_get_installed_count();

if (device_count != 1)
{
    printf("Unexpected number of devices found (%d)\n", device_count);
    goto Exit;
}

if (K4A_RESULT_SUCCEEDED != k4a_device_open(K4A_DEVICE_DEFAULT, &device))
{
    printf("Failed to open device\n");
    goto Exit;
}

Sonraki adımlar