استرداد بيانات صورة Azure Kinect
توفر هذه الصفحة تفاصيل حول كيفية استرداد الصور من Kinect Azure. توضح المقالة كيفية التقاط الصور المنسقة بين لون الجهاز وعمقه والوصول إليها. للوصول إلى الصور ، يجب عليك أولا فتح الجهاز وتكوينه ، ثم يمكنك التقاط الصور. قبل تكوين صورة والتقاطها، يجب عليك البحث عن الجهاز وفتحه.
يمكنك أيضا الرجوع إلى مثال دفق SDK الذي يوضح كيفية استخدام الوظائف في هذه المقالة.
يتم تغطية الوظائف التالية:
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()
تكوين الجهاز وتشغيله
تدعم الكاميرتان المتوفران على جهازك Kinect أوضاعا ودقة وتنسيقات إخراج متعددة. للحصول على قائمة كاملة، راجع مواصفات أجهزة Azure Kinect Development Kit.
يتم تعيين تكوين البث باستخدام القيم الموجودة k4a_device_configuration_t في الهيكل.
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;
}
بمجرد بدء تشغيل الكاميرات، ستستمر في التقاط البيانات حتى k4a_device_stop_cameras() يتم استدعاؤها أو إغلاق الجهاز.
تحقيق الاستقرار
عند بدء تشغيل الأجهزة باستخدام ميزة مزامنة الأجهزة المتعددة، يوصى بشدة بالقيام بذلك باستخدام إعداد تعريض ثابت. مع مجموعة التعريض الضوئي اليدوي ، يمكن أن يستغرق الأمر ما يصل إلى ثماني لقطات من الجهاز قبل استقرار الصور ومعدل الإطارات. مع التعرض التلقائي ، يمكن أن يستغرق الأمر ما يصل إلى 20 لقطة قبل استقرار الصور ومعدل الإطارات.
الحصول على لقطة من الجهاز
يتم التقاط الصور من الجهاز بطريقة مترابطة. تحتوي كل صورة تم التقاطها على صورة عمق أو صورة الأشعة تحت الحمراء أو صورة ملونة أو مجموعة من الصور.
بشكل افتراضي ، لن تعرض واجهة برمجة التطبيقات لقطة إلا بعد استلامها لجميع الصور المطلوبة لوضع البث. يمكنك تكوين واجهة برمجة التطبيقات لإرجاع اللقطات الجزئية ذات الصور ذات العمق أو الألوان فقط بمجرد توفرها عن طريق مسح synchronized_images_only معلمة k4a_device_configuration_t.
// Capture a depth frame
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;
}
بمجرد أن تقوم واجهة برمجة التطبيقات بإرجاع لقطة بنجاح ، يجب عليك الاتصال k4a_capture_release() عند الانتهاء من استخدام كائن الالتقاط.
الحصول على صورة من الالتقاط
لاسترداد صورة تم التقاطها، اتصل بالوظيفة المناسبة لكل نوع صورة. واحد من:
يجب عليك الاتصال k4a_image_release() بأي k4a_image_t مقبض يتم إرجاعه بواسطة هذه الوظائف بمجرد الانتهاء من استخدام الصورة.
الوصول إلى المخازن المؤقتة للصور
k4a_image_t لديه العديد من وظائف الوصول للحصول على خصائص الصورة.
للوصول إلى المخزن المؤقت لذاكرة الصورة، استخدم k4a_image_get_buffer.
يوضح المثال التالي كيفية الوصول إلى صورة عمق تم التقاطها. ينطبق هذا المبدأ نفسه على أنواع الصور الأخرى. ومع ذلك، تأكد من استبدال متغير نوع الصورة بنوع الصورة الصحيح، مثل الأشعة تحت الحمراء أو اللون.
// 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);
الخطوات التالية
أنت الآن تعرف كيفية التقاط صور الكاميرات وتنسيقها بين اللون والعمق، باستخدام جهاز Azure Kinect. يمكنك أيضا: