استرجع بيانات صورة Azure Kinect

توفر هذه الصفحة تفاصيل حول كيفية استرداد الصور من Azure Kinect. يوضح المقال كيفية تسجيل والوصول إلى الصور المنسقة بين لون الجهاز والعمق. للوصول إلى الصور، يجب عليك أولاً فتح الجهاز وتكوينه، ثم يمكنك تسجيل الصور. قبل تكوين صورة وتسجيلها، يجب عليك البحث عن الجهاز وفتحه.

يمكنك أيضاً الرجوع إلى مثال دفق SDK الذي يوضح كيفية استخدام الوظائف في هذه المقالة.

يتم تغطية الوظائف التالية:

تكوين وبدء تشغيل الجهاز

تدعم الكاميرتان المتاحتان على جهاز 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 لقطة قبل استقرار الصور ومعدل الإطارات.

احصل على لقطة من الجهاز

يتم تسجيل الصور من الجهاز بطريقة مترابطة. تحتوي كل صورة تم تسجيلها على صورة عمق أو صورة الأشعة تحت الحمراء أو صورة ملونة أو مجموعة من الصور.

بشكل افتراضي، ستعيد واجهة برمجة التطبيقات (API) التسجيل فقط بمجرد استلامها لجميع الصور المطلوبة لوضع البث. يمكنك تكوين واجهة برمجة التطبيقات لإرجاع لقطات جزئية ذات عمق فقط أو صور ملونة بمجرد توفرها عن طريق مسح معلمة synchronized_images_only الخاصة بـ k4a_device_configuration_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;
}

بمجرد أن تعيد API التسجيل بنجاح، يجب عليك استدعاء 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. يمكنك أيضاً: