Aracılığıyla paylaş


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

Bu makalede Azure Kinect DK'nizi nasıl bulabileceğiniz ve açabileceğiniz açıklanır. Bu makalede, makinenize bağlı birden çok cihazın olduğu durumların nasıl ele alınacağı açıklanır.

Ayrıca, bu makaledeki işlevlerin nasıl kullanılacağını gösteren SDK Numaralandırma Örneği'ne de başvurabilirsiniz.

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

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

öncelikle kullanarak k4a_device_get_installed_count()şu anda bağlı olan Azure Kinect cihazlarının sayısını alın.

uint32_t device_count = k4a_device_get_installed_count();

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

Cihaz açma

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

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

index parametresik4a_device_open(), birden fazla bağlı cihaz varsa hangi cihazın açılıp açılmadığını belirtir. Yalnızca tek bir cihazın bağlanmasını bekliyorsanız, ilk cihazı belirtmek için veya 0 bağımsız değişkenini K4A_DEVICE_DEFAULT geçirebilirsiniz.

Bir cihazı her açtığınızda tutamacı kullanmayı bitirdiğinizde aramanız k4a_device_close() gerekir. Tutamacı kapatana kadar aynı cihaza başka tanıtıcı açılamaz.

Belirli bir cihazı tanımlama

Cihazların dizine göre numaralandırma sırası, cihazlar eklenene 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 tanıtıcıyı k4a_device_get_serialnum() açtıktan sonra işlevini kullanın.

Bu örnekte, seri numarasını depolamak için doğru miktarda belleğin nasıl ayrılacakları gösterilmektedir.

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çma

Çoğu uygulamada, aynı bilgisayara yalnızca tek bir Azure Kinect DK eklenir. Yalnızca beklenen tek cihaza bağlanmanız gerekiyorsa ile çağrısı k4a_device_open() index K4A_DEVICE_DEFAULT yapabilir ve ilk cihazı açabilirsiniz.

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