Azure Kinect-rendszerképadatok lekérése
Ez az oldal részletesen bemutatja, hogyan kérhetők le képek az Azure Kinectből. A cikk bemutatja, hogyan rögzítheti és érheti el az eszköz színe és mélysége között koordinált képeket. A képek eléréséhez először meg kell nyitnia és konfigurálnia kell az eszközt, majd rögzítenie kell a képeket. A rendszerkép konfigurálása és rögzítése előtt meg kell nyitnia az eszközt.
Tekintse meg az SDK-streamelési példát is, amely a függvények használatát mutatja be ebben a cikkben.
A következő függvények tartoznak a hatálya alá:
k4a_device_start_cameras()
k4a_device_get_capture()
k4a_capture_get_depth_image()
k4a_image_get_buffer()
k4a_image_release()
k4a_capture_release()
k4a_device_stop_cameras()
Az eszköz konfigurálása és elindítása
A Kinect-eszközön elérhető két kamera többféle módot, felbontást és kimeneti formátumot támogat. A teljes listát az Azure Kinect Development Kit hardverspecifikációiban találja.
A streamelési konfiguráció a struktúra értékeinek k4a_device_configuration_t
használatával van beállítva.
k4a_device_configuration_t config = K4A_DEVICE_CONFIG_INIT_DISABLE_ALL;
config.camera_fps = K4A_FRAMES_PER_SECOND_30;
config.color_format = K4A_IMAGE_FORMAT_COLOR_MJPG;
config.color_resolution = K4A_COLOR_RESOLUTION_2160P;
config.depth_mode = K4A_DEPTH_MODE_NFOV_UNBINNED;
if (K4A_RESULT_SUCCEEDED != k4a_device_start_cameras(device, &config))
{
printf("Failed to start device\n");
goto Exit;
}
A kamerák elindítása után a rendszer addig rögzíti az adatokat, amíg k4a_device_stop_cameras()
a rendszer nem hívja meg, vagy be nem zárja az eszközt.
Stabilizáció
Ha az eszközöket a többeszközes szinkronizálási funkcióval indítja el, erősen ajánlott rögzített expozíciós beállítással elvégezni. Manuális expozíciós készlettel akár nyolc felvételt is készíthet az eszközről a képek és a képkockasebesség stabilizálása előtt. Az automatikus expozíció akár 20 felvételt is igénybe vehet a képek és a képkockasebesség stabilizálása előtt.
Rögzítés lekérése az eszközről
A rendszer a képeket korrelált módon rögzíti az eszközről. Minden rögzített kép tartalmaz egy mélységi képet, egy IR-képet, egy színes képet vagy a képek kombinációját.
Alapértelmezés szerint az API csak akkor ad vissza rögzítést, ha megkapta a streamelési módhoz kért összes képet. Az API-t úgy konfigurálhatja, hogy csak mélységi vagy színes képeket tartalmazó részleges rögzítéseket adjon vissza, amint elérhetők, törölje a synchronized_images_only
k4a_device_configuration_t
paraméterét.
// Capture a depth frame
k4a_capture_t capture = NULL;
switch (k4a_device_get_capture(device, &capture, TIMEOUT_IN_MS))
{
case K4A_WAIT_RESULT_SUCCEEDED:
break;
case K4A_WAIT_RESULT_TIMEOUT:
printf("Timed out waiting for a capture\n");
continue;
break;
case K4A_WAIT_RESULT_FAILED:
printf("Failed to read a capture\n");
goto Exit;
}
Miután az API sikeresen visszaadott egy rögzítést, a rögzítési objektum használatának befejezésekor fel kell hívnia a hívást k4a_capture_release()
.
Kép lekérése a rögzítésből
Rögzített kép lekéréséhez hívja meg az egyes képtípusoknak megfelelő függvényt. Az alábbiak egyike:
A rendszerkép használata után a függvények által visszaadott leírókat k4a_image_t
fel kell hívniak4a_image_release()
.
Képpufferek elérése
k4a_image_t
számos kiegészítő funkcióval rendelkezik a kép tulajdonságainak lekéréséhez.
A lemezkép memóriapufferének eléréséhez használja a k4a_image_get_buffer.
Az alábbi példa bemutatja, hogyan lehet hozzáférni egy rögzített mélységű képhez. Ugyanez az elv vonatkozik más képtípusokra is. Győződjön meg azonban arról, hogy a képtípus változót a megfelelő képtípusra cseréli, például ir vagy szín.
// Access the depth16 image
k4a_image_t image = k4a_capture_get_depth_image(capture);
if (image != NULL)
{
printf(" | Depth16 res:%4dx%4d stride:%5d\n",
k4a_image_get_height_pixels(image),
k4a_image_get_width_pixels(image),
k4a_image_get_stride_bytes(image));
// Release the image
k4a_image_release(image);
}
// Release the capture
k4a_capture_release(capture);
Következő lépések
Most már tudja, hogyan rögzítheti és koordinálhatja a kamerák képeit a szín és a mélység között az Azure Kinect-eszköz használatával. A következőket is megteheti: