Het Azure Kinect-apparaat zoeken en vervolgens openen
In dit artikel wordt beschreven hoe u uw Azure Kinect DK kunt vinden en vervolgens kunt openen. In het artikel wordt uitgelegd hoe u de case kunt afhandelen waarbij er meerdere apparaten zijn verbonden met uw computer.
U kunt ook verwijzen naar het SDK-opsommingsvoorbeeld dat laat zien hoe u de functies in dit artikel gebruikt.
De volgende functies worden behandeld:
Het aantal verbonden apparaten detecteren
Haal eerst het aantal momenteel verbonden Azure Kinect-apparaten op met behulp van k4a_device_get_installed_count()
.
uint32_t device_count = k4a_device_get_installed_count();
printf("Found %d connected devices:\n", device_count);
Een apparaat openen
Als u informatie over een apparaat wilt ophalen of gegevens wilt lezen, moet u eerst een ingang openen voor het apparaat met behulp van 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);
}
De index
parameter geeft k4a_device_open()
aan welk apparaat moet worden geopend als er meerdere zijn verbonden. Als u verwacht dat slechts één apparaat is verbonden, kunt u een argument van K4A_DEVICE_DEFAULT
of 0 doorgeven om het eerste apparaat aan te geven.
Wanneer u een apparaat opent, moet u bellen k4a_device_close()
wanneer u klaar bent met de ingang. Er kunnen geen andere ingangen worden geopend op hetzelfde apparaat totdat u de ingang hebt gesloten.
Een specifiek apparaat identificeren
De volgorde van apparaten die op index worden opgesomd, wordt pas gewijzigd wanneer apparaten zijn gekoppeld of losgekoppeld. Als u een fysiek apparaat wilt identificeren, moet u het serienummer van het apparaat gebruiken.
Als u het serienummer van het apparaat wilt lezen, gebruikt u de k4a_device_get_serialnum()
functie nadat u een ingang hebt geopend.
In dit voorbeeld ziet u hoe u de juiste hoeveelheid geheugen toewijst om het serienummer op te slaan.
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);
Het standaardapparaat openen
In de meeste toepassingen is er slechts één Azure Kinect DK gekoppeld aan dezelfde computer. Als u alleen verbinding hoeft te maken met het verwachte apparaat, kunt u bellen k4a_device_open()
met index
K4A_DEVICE_DEFAULT
of het eerste apparaat openen.
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;
}