NXP AN14263 تنفيذ التعرف على الوجوه LVGL GUI على Framewor
معلومات المنتج
تحديد
- اسم المنتج: التعرف على الوجوه بواجهة المستخدم الرسومية LVGL في إطار العمل
- مراجعة الوثيقة: 1 – 19 أبريل 2024
- الكلمات المفتاحية: التعرف على الوجه، واجهة المستخدم الرسومية LVGL، الإطار
تعليمات استخدام المنتج
- زيادةview
يمكّن هذا المنتج نموذج خوارزمية الرؤية AI&ML للتعرف على الوجه على إطار عمل لتنفيذ وظيفة التعرف على الوجه باستخدام واجهة مستخدم رسومية LVGL بسيطةampعلى لوحة SLN-TLHMI-IOT. - انتهى الإطارview
تم تصميم برنامج الحل حول بنية إطار العمل التي تتضمن مديري الأجهزة المسؤولين عن إدارة الأجهزة، وأجهزة HAL لاستخلاص التفاصيل الأساسية، وأحداث الاتصال بين الأجهزة المختلفة. - سمات
يسمح المنتج بتنفيذ وظيفة التعرف على الوجه عبر الكاميرا مسبقًاview على شاشة واجهة المستخدم الرسومية مع أزرار لتشغيل تسجيل الوجه والتعرف عليه وإزالته. يتم تخزين بيانات الوجه المسجلة على Flash عبر ملف file نظام. - محتوى ملاحظة التطبيق
تعرض ملاحظة التطبيق شاشة LVGL GUI مع كاميرا مسبقةview وأزرار للإجراءات المتعلقة بالوجه. فهو يساعد المطورين على فهم إطار العمل وكيفية تنفيذ التعرف على الوجوه باستخدام المثال المقدمampليه.
زيادةview
أطلقت NXP مجموعة أدوات تطوير الحلول المسماة SLN-TLHMI-IOT والتي تركز على تطبيقات HMI الذكية. إنه يتيح واجهة HMI الذكية مع واجهة مستخدم ML للرؤية والصوت والرسومات المطبقة على جهاز NXP i.MX RT117H MCU واحد. استنادًا إلى SDK، تم إنشاء برنامج الحل على تصميم يسمى إطار العمل الذي يدعم التصميمات المرنة وتخصيص وظائف الرؤية والصوت. لمساعدة المستخدمين على استخدام منصة البرنامج بشكل أفضل، يتم توفير بعض المستندات الأساسية، على سبيل المثالample، دليل مستخدم تطوير البرمجيات. يقدم الدليل تصميم البرامج الأساسي وهندسة التطبيقات التي تغطي جميع مكونات الحل بما في ذلك إطار العمل لمساعدة المطورين على تنفيذ تطبيقاتهم بسهولة وكفاءة أكبر باستخدام SLN-TLHMI-IOT.
لمزيد من التفاصيل حول الحل والمستندات ذات الصلة، قم بزيارة web صفحة حل NXP EdgeReady Smart HMI المستند إلى i.MX RT117H مع ML Vision والصوت وواجهة المستخدم الرسومية. ومع ذلك، لا يزال ليس من السهل على المطورين تنفيذ تطبيقات HMI الذكية الخاصة بهم بالرجوع إلى هذه الأدلة الأساسية. تم التخطيط لسلسلة من ملاحظات التطبيق للمساعدة في دراسة التطوير على إطار العمل خطوة بخطوة. تعتمد ملاحظة التطبيق هذه على تطبيق LVGL GUI Camera Preview على الإطار (وثيقة AN14147). توضح ملاحظة التطبيق هذه كيفية تمكين نموذج خوارزمية الرؤية AI&ML للتعرف على الوجه في إطار العمل لتنفيذ وظيفة التعرف على الوجه عبر الكاميرا مسبقًاview على شاشة واجهة المستخدم الرسومية باستخدام واجهة المستخدم الرسومية LVGL البسيطةampعلى لوحة SLN-TLHMI-IOT. في مذكرة التطبيق، السابقينampيقدم شاشة LVGL GUI مع كاميرا مسبقةview وبعض الأزرار لتشغيل تسجيل الوجه والتعرف عليه وإزالته. يتم تخزين بيانات الوجه المسجلة على Flash عبر القليل file نظام.
على مستوى عالٍ، تحتوي مذكرة الطلب على المحتويات التالية:
- تمكين ميزة التعرف على الوجه في الإطار.
- أضف دعم قاعدة بيانات الوجه على الإطار عبر file النظام على فلاش.
- تنفيذ تطبيق LVGL GUI. من خلال المقدمات المذكورة أعلاه، تساعد هذه الوثيقة المطورين على:
- فهم إطار العمل وبرنامج حل HMI الذكي بشكل أكثر عمقًا.
- قم بتطوير التعرف على الوجوه AI & ML على إطار العمل باستخدام تطبيق LVGL GUI.
انتهى الإطارview
تم تصميم برنامج الحل بشكل أساسي حول استخدام بنية إطار العمل التي تتكون من عدة أجزاء مختلفة:
- مديرو الأجهزة – الجزء الأساسي
- أجهزة طبقة تجريد الأجهزة (HAL).
- الرسائل/الأحداث
كما هو مبين في الشكل 1، انتهىview آلية الإطار هي:
يتحمل مديرو الأجهزة مسؤولية إدارة الأجهزة التي يستخدمها النظام. كل نوع جهاز (الإدخال والإخراج وما إلى ذلك) لديه مدير جهاز خاص به. مع بدء تشغيل مدير الأجهزة بعد تسجيل الأجهزة عليه، فإنه ينتظر ويتحقق من رسالة لنقل البيانات إلى الأجهزة والمديرين الآخرين بعد تهيئة الأجهزة المسجلة وبدء تشغيلها. تتم كتابة أجهزة HAL أعلى رمز برنامج التشغيل ذي المستوى الأدنى، مما يساعد على زيادة إمكانية فهم الكود من خلال استخلاص العديد من التفاصيل الأساسية.
الأحداث هي وسيلة يتم من خلالها توصيل المعلومات بين الأجهزة المختلفة عبر مديريها. عند تشغيل حدث ما، يقوم الجهاز الذي استقبل الحدث لأول مرة بإبلاغ هذا الحدث إلى مديره، ثم يقوم بدوره بإخطار المديرين الآخرين المعينين لتلقي الحدث.
تمحور التصميم المعماري للإطار حول ثلاثة أهداف أساسية:
- سهولة الاستخدام
- المرونة/قابلية النقل
- أداء
تم تصميم الإطار بهدف تسريع الوقت اللازم لتسويق الرؤية وتطبيقات التعلم الآلي الأخرى. لضمان سرعة الوصول إلى السوق، من المهم أن يكون البرنامج نفسه سهل الفهم والتعديل. مع أخذ هذا الهدف في الاعتبار، من السهل تعديل بنية الإطار دون أن تكون مقيدة، ودون أن يكون ذلك على حساب الأداء.
لمزيد من التفاصيل حول إطار العمل، راجع دليل مستخدم تطوير برمجيات Smart HMI (وثيقة MCU-SMHMI-SDUG).
مكتبة الرسومات الخفيفة والمتعددة الاستخدامات (LVGL)
LVGL (مكتبة الرسومات الخفيفة والمتعددة الاستخدامات) هي مكتبة رسومات مجانية ومفتوحة المصدر توفر كل ما تحتاجه لإنشاء واجهة مستخدم رسومية مدمجة مع عناصر رسومية سهلة الاستخدام وتأثيرات بصرية جميلة ومساحة منخفضة للذاكرة.
دليل واجهة المستخدم الرسومية
GUI Guider عبارة عن أداة تطوير واجهة مستخدم رسومية سهلة الاستخدام من NXP تتيح التطوير السريع لشاشات العرض عالية الجودة باستخدام مكتبة رسومات LVGL مفتوحة المصدر. يسهّل محرر السحب والإفلات الخاص بـ GUI Guider استخدام العديد من ميزات LVGL مثل عناصر واجهة المستخدم والرسوم المتحركة والأنماط لإنشاء واجهة مستخدم رسومية بأقل قدر من الترميز أو بدون أي ترميز على الإطلاق.
بنقرة زر واحدة، يمكنك تشغيل تطبيقك في بيئة محاكاة أو تصديره إلى مشروع مستهدف. يمكن بسهولة إضافة التعليمات البرمجية التي تم إنشاؤها من GUI Guider إلى مشروعك، مما يؤدي إلى تسريع عملية التطوير والسماح لك بإضافة واجهة مستخدم مضمنة إلى تطبيقك بسلاسة. GUI Guider مجاني للاستخدام مع الأغراض العامة لـ NXP ووحدات MCU المتقاطعة ويتضمن قوالب مشروع مضمنة للعديد من الأنظمة الأساسية المدعومة. لمعرفة المزيد حول تطوير LVGL وGUI على GUI Guider، راجع مكتبة الرسومات الخفيفة والمتعددة الاستخدامات ودليل GUI.
بيئة التطوير
أولاً، قم بإعداد وإعداد بيئة الأجهزة والبرامج لتنفيذ المثال السابقampلو على الإطار.
بيئة الأجهزة
تم إعداد بيئة الأجهزة للتحقق من الملف السابقampعلى:
- مجموعة أدوات تطوير HMI الذكية المستندة إلى NXP i.MX RT117H (مجموعة SLN_TLHMI_IOT)
- SEGGER J-Link مع محول Cortex-M ذو 9 سنون وV7.84a أو إصدار أحدث من برنامج التشغيل
بيئة البرمجيات
تم إعداد بيئة البرنامج لتطوير السابقينampعلى:
- مكوكسبريسو IDE V11.7.0
- واجهة المستخدم الرسومية المرشد V1.6.1-GA
- lvgl_gui_camera_preview_cm7 - على سبيل المثالampرمز لو ملاحظة التطبيق الثاني باعتباره البرنامج الأساسي للتطوير. لمزيد من التفاصيل، انظر https://mcuxpresso.nxp.com/appcodehub.
- RT1170 SDK V2.13.0 – كمورد التعليمات البرمجية للتطوير.
- برنامج SLN-TLHMI-IOT V1.1.2 - كود مصدر HMI الذكي الذي تم إصداره في مستودع NXP GitHub كمورد التعليمات البرمجية للتطوير. لمزيد من التفاصيل، راجع: GitHub – NXP/mcu-smhmi في الإصدار 1.1.2
للحصول على تفاصيل حول الحصول على بيئة البرنامج وإعدادها، راجع: بدء استخدام SLN-TLHMI-IOT.
بنية الرؤية على الإطار
يظهر الشكل 2 بنية الرؤية في الإطار. تحتوي خوارزمية الرؤية HAL (OASIS_HAL) على العمليات التالية:
- قم بتسجيل الوجه والتعرف عليه من خلال نموذج خوارزمية الرؤية AI&ML بعد تلقي الأحداث ذات الصلة من إخراج UI HAL. قم بإعلام نتائج الاستدلال من نموذج الخوارزمية إلى مخرج UI HAL.
- الوصول (إضافة، حذف...) إلى قاعدة بيانات ميزات الوجه بناءً على القليل file النظام عن طريق استدعاء واجهات برمجة التطبيقات الخاصة بـ FaceDB HAL بعد تلقي الأحداث ذات الصلة من إخراج UI HAL.
- اطلب إطار فيديو الكاميرا من الكاميرا HAL عند القيام بتسجيل الوجه والتعرف عليه.
تنفيذ التعرف على الوجه في الإطار
التعرف على الوجوه LVGL GUI على سبيل المثالampلو (السابقampيتم توفير le لاحقًا) على إطار العمل بناءً على السابقampرموز تنفيذ LVGL GUI Camera Preview على الإطار (وثيقة AN14147).
لإظهار التعرف على الوجه في السابقample، تم تصميم الوظيفة الأساسية لتطبيق واجهة المستخدم الرسومية (انظر الشاشة الرئيسية في الشكل 3) كما هو موضح أدناه:
- يقوم تطبيق GUI بتشغيل حدث تسجيل الوجه أو التعرف عليه إلى مخرج UI HAL عند النقر فوق الزر التسجيل أو التعرف. ويُعلم إخراج UI HAL بحدث إضافة مستخدم إلى خوارزمية الرؤية HAL بعد نجاح تسجيل الوجه.
- يقوم تطبيق GUI بتشغيل حدث حذف مستخدم إلى إخراج UI HAL عند النقر فوق الزر حذف المستخدم بعد التعرف على وجه المستخدم.
- يقوم تطبيق GUI بتشغيل حدث إيقاف تشغيل خوارزمية الواحة إلى مخرج UI HAL عند النقر على الشاشة خارج الأزرار والصور.
قم بإعداد حزمة البرامج لتنفيذ exampليه.
- استنساخ البرنامج الأساسي lvgl_gui_camera_preview_سم7. تغيير اسم المشروع والرئيسي fileالاسم إلى lvgl_gui_face_rec_cm7.
- يلزم تحديث إطار العمل في البرنامج حيث بدأت أكواد المصدر الخاصة بإطار العمل في الظهور بشكل عام على GitHub بدءًا من الإصدار 1.1.2.
- استبدل مجلد إطار العمل بنسخة V1.1.2 من GitHub باستثناء files fwk_log.h وfwk_common.h ضمن inc\ حيث تم تعديلهما لسلسلة ملاحظات التطبيق. تظهر العمليات في الشكل 4:
- احذف المجلد Framework_cm7 ضمن مجموعة libs وقم بإزالة مكتبة Framework_cm7 ومسار البحث الخاص بها الذي تم تكوينه في Project > Properties > C/C++ Build > settings > Tool Settings > MCU C++ Linker > Libraries نظرًا لتوفير الكود المصدري للنواة.
تمكين ميزة التعرف على الوجه في الإطار
تم تصميم ميزة التعرف على الوجه على نموذج خوارزمية رؤية ML المقدمة كمكتبة ثابتة - مكتبة وقت تشغيل خفيفة من NXP. المكتبة عبارة عن مكتبة ذكاء اصطناعي صغيرة وعالية الكفاءة ومخصصة ومُحسّنة. يتضمن النموذج اكتشاف الوجه والتعرف على الوجه والكشف عن الزجاج والكشف عن الحياة. يوفر بشكل أساسي واجهة برمجة التطبيقات OASISLT_run_extened() لتشغيل خط أنابيب التعرف على الوجه أثناء تحديث النتائج للمتصل من خلال عمليات الاسترجاعات للحدث، وإضافة/تحديث/حذف الوجوه في قاعدة البيانات من خلال عمليات الاسترجاعات لقاعدة بيانات الوجه بعد تحديد معلومات الإطار المصدر، وعمليات الاسترجاعات، والذاكرة التجمع الذي تستخدمه المكتبة عن طريق استدعاء API OASISLT_init() آخر عند التهيئة. يتم تنفيذ استدعاء واجهات برمجة التطبيقات ووظائف رد الاتصال في خوارزمية الرؤية HAL لإطار العمل.
إضافة مكتبة نماذج Vision Algo
- انسخ مجلد الواحة الذي يحتوي على المكتبة والرأس ذي الصلة file من Smart HMI\coffee_machine\cm7\libs\ إلى المجلد libs الخاص بالملف السابقampلو سو.
- أضف مسار البحث للرأس file في المشروع > الخصائص > بناء C/C++ > الإعدادات > إعدادات الأداة > مترجم MCU C > يتضمن ومترجم MCU C++ > يتضمن: "${workspace_loc:/${ProjName}/libs/oasis/include}"
- أضف lib ومسار البحث الخاص به في Project > Properties > C/C++ Build > settings > MCU C+ + Linker > Libraries: liboasis_lite2D_DEFAULT_117f_ae.a “${workspace_loc:/${ProjName}/libs/oasis}” وتعريف الماكرو إلى قم بتمكين الميزة في Project > Properties > C/C++ Build > الإعدادات > إعدادات الأداة > مترجم MCU C > المعالج المسبق والمترجم MCU C++ > المعالج المسبق: SMART_TLHMI_2D
تمكين الرؤية خوارزمية HAL
تعمل خوارزمية الرؤية HAL على تشغيل نموذج خوارزمية الرؤية للعمل وتستجيب للنتائج لمخرجات واجهة المستخدم HAL بعد تلقي الأحداث منه.
لتمكينه، قم باستنساخ برنامج تشغيل HAL المماثل الموجود file حيث يتم تنفيذ الوظائف التالية:
- تنفيذ عمليات الاسترجاعات لعمليات قاعدة بيانات الوجه ومعالجة الأحداث.
- قم بقيادة خوارزمية الرؤية للعمل من خلال استدعاء واجهات برمجة التطبيقات الخاصة بمكتبة الواحة.
- الوصول إلى قاعدة بيانات وجه المستخدم وقاعدة بيانات التطبيق (ليست هناك حاجة إليها في المثال السابقampلو).
- تلقي الأحداث من وإرسال النتائج إلى إخراج UI HAL.
الأعمال الرئيسية لتنفيذ HAL للسابقينampجنيه هي:
- استنساخ برنامج تشغيل HAL المماثل الموجود file وتغيير الأسماء ذات الصلة.
- إزالة الرموز المتعلقة بعمليات بيانات التطبيق.
- قم بتحديث التعريفات والوظائف للتعامل مع الأحداث من إخراج UI HAL لكل exampالتصميم.
- قم بإضافة التكوينات المطلوبة في تهيئة الواحة.
الخطوات التفصيلية هي كما يلي:
- استنساخ hal_vision_algo_oasis_coffeemachine.c. غير ال fileالاسم إلى hal_vision_algo_oasis_guifacerec.c. واستبدل جميع سلاسل CoffeeMachine بـ GUIFaceRec في ملف file.
- قم بإزالة الرموز التي تحتوي على السلسلة Coffeedb (غير حساسة لحالة الأحرف) المرتبطة بقاعدة بيانات التطبيق، على سبيل المثالampلو #تشمل hal_sln_coffeedb.h.
- قم بتعديل الدالة HAL_VisionAlgoDev_OasisGUIFaceRec_InputNotify() لمعالجة الأحداث من واجهة مستخدم الإخراج HAL.
- قم بتغيير تعريف الحدث kEventFaceRecId_RegisterCoffeeSelection إلى kEventFaceRecId_RegisterUserFace وسلسلة البنية regCoffeeSelection إلى regGUIFaceRec لمعالجة الحدث لإضافة بيانات ميزات الوجه الجديدة إلى قاعدة البيانات.
- لإظهار العملية القياسية لإجراءات التعرف على الوجه في السابقample، قم بتعديل المعالجة في حالة kEventFaceRecID_OasisSetState مع تعريفات الحالات:
- koASISLiteState
- تسجيل kOASISLiteState
- الاعتراف kOASISLiteState
- متوقف
- إضافة وتعديل تعريفات الأحداث المذكورة في الخطوة أعلاه.
- انسخ الرأس file Smart_tlhmi_event_descriptor.h من Smart HMI\coffee_machine \cm7\source\event_handlers\ إلى مصدر المجلد السابقampلو سو. تحديث file كما هو موضح أدناه:
- قم بتغيير تعريف الحدث kEventFaceRecId_RegisterCoffeeSelection إلى kEventFaceRecId_RegisterUserFace في نوع التعداد _event_smart_tlhmi_id وسلسلة البنية regCoffeeSelection إلى regGUIFaceRec في البنية _event_smart_tlhmi. لذلك، قم بتغيير البنية Register_coffee_selection_event_t لـ regCoffeeSelection إلى Register_gui_facerec_event_t.
- احذف محتويات else المستخدمة لتطبيق ماكينة القهوة، على سبيل المثالample، سطر الكود الخاص بالصوت: #include “hal_event_descriptor_voice.h”.
- أضف النوعين kOASISLiteState_Stopped وkOASISLiteState_Running إلى نوع التعداد oasis_lite_state_t في hal_vision_algo.h ضمن إطار العمل>hal>vision في المشروع على النحو التالي:
typedef التعداد _oasis_lite_state {- koASISLiteState
- قيد التشغيل، kOASISLiteState
- توقف، kOASISSLiteState
- التعرف على،
- koASISLiteState
- التسجيل، kOASISLiteState
- إلغاء التسجيل، kOASISLiteState
- التسجيل عن بعد، kOASISLiteState
- عدد
- استخدم البنية المحدثة أعلاه oasis_lite_state_t لتحسين البنية oasis_state_event_t في hal_event_descriptor_face_rec.h ضمن إطار العمل>hal>الرؤية في المشروع على النحو التالي: typedef struct _oasis_state_event_t { oasis_lite_state_t State; } oasis_state_event_t;
- قم بتغيير كل kEventInfo_Remote إلى kEventInfo_Local لإرسال الأحداث من خوارزمية الرؤية HAL إلى HALs الأخرى التي تعمل على نفس النواة مثل النواة الفردية بدلاً من ثنائية النواة المستخدمة في السابقampليه.
- قم بإضافة وتعديل التكوينات التالية لتهيئة الواحة في OASISLT_init():
- أضف تعريفات الماكرو وأقسام الذاكرة لإطار الفيديو في board_define.h: #define OASIS_RGB_FRAME_WIDTH 800
- #تعريف OASIS_RGB_FRAME_HEIGHT 600
- #define OASIS_RGB_FRAME_SRC_FORMAT kPixelFormat_YUV1P444_RGB
- #تعريف OASIS_RGB_FRAME_BYTE_PER_PIXEL 3
- #define AT_FB_SHMEM_SECTION_ALIGN(var, alignbytes) \
- __attribute__((section(“.bss.$fb_sh_mem,\”aw\”،%nobits @”))) var
- __السمة__((محاذاة(محاذاة)))
- قم بتكوين تخصيص الذاكرة لقسم الذاكرة أعلاه fb_sh_mem في Project > Properties > C/C++ Build > إعدادات MCU الموضحة في الشكل 5:
- قم بتعريف المتغير العام g_DTCOPBuf في lvgl_gui_face_rec_cm7.cpp: AT_NONCACHEABLE_SECTION_ALIGN_DTC (uint8_t g_DTCOPBuf[DTC_OPTIMIZE_BUFFER_SIZE], 4);
- استمر في إضافة التعريفات المستخدمة في المتغير أعلاه:
- حدد القسم أعلاه في board_define.h:
- #define AT_NONCACHEABLE_SECTION_ALIGN_DTC(var, alignbytes) \
- السمة __ ((القسم(“.bss.$SRAM_DTC_cm7,\”aw\”،%nobits @”))) var
- السمة __ ((محاذاة (محاذاة)))
- قم بتضمين الرأس file hal_vision_algo.h يحتوي على تعريف الماكرو DTC_OPTIMIZE_BUFFER_SIZE في app_config.h المضمن في lvgl_gui_face_rec_cm7.cpp.
- أضف تعريفات الماكرو وأقسام الذاكرة لإطار الفيديو في board_define.h: #define OASIS_RGB_FRAME_WIDTH 800
- قم بتعيين المتغير s_debugOption إلى true لإظهار حالة التقدم في التعرف على الوجه.
- أضف مسار البحث للرأس fileرؤية HAL في المشروع > الخصائص > بناء C/C++ > الإعدادات > إعدادات الأداة > مترجم MCU C > يتضمن ومترجم MCU C++ > يتضمن: "${workspace_loc:/${ProjName}/framework/hal/vision}"
- أضف التعريف أدناه لتمكين رؤية algo HAL في board_define.h: #define ENABLE_VISIONALGO_DEV_Oasis_GUIFaceRec
تمكين الإخراج UI HAL
يقوم إخراج UI HAL بإعلام الأحداث إلى خوارزمية الرؤية HAL ويستجيب لنتائج الاستدلال من خوارزمية الرؤية HAL. باستخدام تطبيق GUI، يتم تشغيل الأحداث بشكل عام بواسطة التطبيق وتظهر النتائج على التطبيق.
لتمكينه، قم باستنساخ برنامج تشغيل HAL المماثل الموجود file حيث يتم تنفيذ الوظائف التالية بشكل عام:
- إخطار الأحداث للتعرف على الوجوه والوصول إلى قاعدة البيانات.
- قم بتنفيذ عمليات الاسترجاعات لتطبيق واجهة المستخدم الرسومية لتشغيل الأحداث.
- التعامل مع نتائج الاستدلال من وحدة خوارزمية الرؤية.
- اعرض العملية ونتائج التعامل مع الأحداث على واجهة المستخدم من خلال شريط التقدم الذي يتم التحكم فيه باستخدام المؤقتات ومستطيل دليل الوجه.
الأعمال الرئيسية لتنفيذ HAL للسابقينampالمستخدمة في هذا المستند هي:
- استنساخ برنامج تشغيل HAL المماثل الموجود file وتغيير الأسماء ذات الصلة.
- قم بإزالة الرموز المتعلقة بالتطبيق.
- قم بتحديث وظائف الإعلام بالأحداث والاستجابة للنتائج وفقًا للسابقينampالتصميم.
- أضف عمليات الاسترجاعات لتطبيق واجهة المستخدم الرسومية لتشغيل الأحداث.
الخطوات التفصيلية هي كما يلي:
- استنساخ hal_output_ui_coffee_machine.c. غير ال fileالاسم إلى hal_output_ui_guifacerec.c.
- استبدل كافة سلاسل CoffeeMachine بـ GUIFaceRec في ملف file.
- قم بإزالة الرموز المتعلقة بالتطبيق – ماكينة القهوة.
- قم بإزالة الدالتين WakeUp() و_StandBy() والرموز ذات الصلة (قد تبحث في سلسلة Wake_up وstandby عنهما).
- إزالة ما قبلview أحداث الوضع التي تتعامل مع الرموز ذات الصلة في HAL_OutputDev_UiGUIFaceRec_Input Notify().
- قم بإزالة الوظائف UI_xxx_Callback() والرموز التي تحتوي على السلسلة gui_ والشاشة المتعلقة بواجهة المستخدم الرسومية لآلة القهوة باستثناء gui_set_virtual_face() للوظيفة السابقةview ميزة الوضع.
- قم بإزالة جميع الرموز المرتبطة بالمتغيرات s_IsWaitingAnotherSelection وs_IsWaitingRegisterSelection المتعلقة بتطبيق ماكينة القهوة.
- قم بإزالة الرموز المتعلقة بالصوت والصوت واللغة. على سبيل المثالampعلى:
- #تتضمن "hal_voice_algo_asr_local.h"،
- #تتضمن "hal_event_descriptor_voice.h"
- بالنسبة لإشعارات الأحداث المختلفة، قم بتنفيذ الوظائف الجديدة _OutputManagerNotify() و_SetFaceRec() و_RegisterGUIFaceRec() وDeregisterGUIFaceRec() بالإشارة إلى الوظائف _StopFaceRec() و_RegisterCoffeeSelection() وDeregisterCoffeeSelection() قبل حذفها.
- يقوم _OutputManagerNotify() بتنفيذ وظيفة إخراج الحدث الأساسية لإرسال حدث إلى خوارزمية الرؤية HAL. الوظائف التالية تسميها لإرسال الأحداث الخاصة بها.
- يرسل _SetFaceRec() الحدث kEventFaceRecID_OasisSetState لتشغيل خوارزمية الرؤية لتسجيل الوجه والتعرف عليه وإيقاف الخوارزمية.
- يرسل _RegisterGUIFaceRec() الحدث kEventFaceRecId_RegisterGUIFaceRec الذي تم تعريفه في Smart_tlhmi_event_descriptor.h لإضافة بيانات ميزات الوجه إلى قاعدة البيانات عند التسجيل بشكل جيد.
- يرسل DeregisterGUIFaceRec() الحدث kEventFaceRecID_DelUser لحذف بيانات ميزة الوجه من قاعدة البيانات عند تمرير التعرف على الوجه.
- قم بتحديث الرموز لاتخاذ الإجراءات المقابلة بما في ذلك تحديث واجهة المستخدم الرسومية عن طريق استدعاء واجهات برمجة التطبيقات من تطبيق LVGL GUI للحصول على نتائج الاستدلال لتسجيل الوجه والتعرف عليه في الوظيفة _InferComplete_Vision() وفقًا للمثال السابقampتصميم لو. على سبيل المثالampلو، عندما يكون تسجيل الوجه ناجحًا،
- توقف عن إظهار التقدم عن طريق استدعاء _FaceRecProcess_Stop();
- أوقف تسجيل الوجه عن طريق الاتصال بـ _SetFaceRec(kOASISLiteState_Stopped);
- أظهر النتيجة الناجحة على واجهة المستخدم الرسومية: gui_show_face_rec_result(kFaceRecResult_OK, s_UserId);
- قم بتسجيل بيانات الوجه في قاعدة البيانات: _RegisterUserFace(s_UserId);
- أضف وظائف رد اتصال واجهة المستخدم للتعامل مع الأحداث: previewوتسجيل الوجه والتعرف عليه وحذف المستخدم الذي يتم تشغيله من واجهة المستخدم الرسومية. على سبيل المثالample، رد اتصال تسجيل الوجه: void UI_Registration_Callback(){ _SetFaceRec(kOASISLiteState_Registration); _FaceRecProcess_Start(); }
- وأضف الدالتين _FaceRecProcess_Start() و _FaceRecProcess_Stop() لإظهار التقدم والحالة في الأحداث والنتائج المختلفة.
- قم بتحديث وظيفة رد اتصال ISR للمؤقت _SessionTimer_Callback() لمعالجة حالة انتهاء المهلة عن طريق الاتصال: gui_show_face_rec_result(kFaceRecResult_TimeOut, s_UserId);
- أضف التعريفات أدناه لتمكين إخراج واجهة المستخدم (HAL) في board_define.h: #define ENABLE_OUTPUT_DEV_UiGUIFaceRec
يلاحظ:
لتقديم ميزة التعرف على الوجه بشكل أفضل، احتفظ بالوظيفة لإظهار عملية ونتائج التعرف على الوجه في إخراج UI HAL. يتم وصف الوظيفة على النحو التالي
- يظهر مستطيل دليل الوجه باللون الأزرق، ويوضح شريط التقدم التقدم عند بدء تسجيل الوجه أو التعرف عليه.
- يظهر مستطيل دليل الوجه باللون الأحمر عند نجاح تسجيل الوجه.
- يظهر مستطيل دليل الوجه باللون الأخضر عند نجاح التعرف على الوجه.
- يظل مستطيل دليل الوجه باللون الأزرق، ويعرض شريط التقدم التقدم الكامل عندما لا ينجح الإجراء بعد انتهاء صلاحية المؤقت. عند هذه النقطة، قم بإيقاف تسجيل الوجه أو التعرف عليه.
يتم عرض شريط التقدم ومستطيل دليل الوجه كأيقونات مضمنة في الملف الثنائي للمورد file ليتم برمجتها في فلاش. يتم إعداد المؤشرات إلى بيانات الرموز الموجودة على SDRAM في الوظيفة LoadIcons(APP_ICONS_BASE) التي يتم استدعاؤها عند تهيئة جهاز UI HAL للإخراج في UI HAL للإخراج. يجب عليه تنفيذ دعم الرموز للوظيفة.
تنفيذ دعم الرموز
- قم ببناء المورد من خلال دمج الرموز مع الصور المستخدمة في تطبيق LVGL GUI:
- استنساخ رأس الرمز الأربعة fileعملية bar_240x14.h و virtual_face_blue_420x426.h و virtual_face_green_420x426.h و virtual_face_red_420x426.h من واجهة HMI الذكية
\coffee machine\resource\icons\ إلى أيقونات المجلد الجديد ضمن مجلد الموارد الخاص بالملف السابقampلو سو. - إضافة مسار البحث للأيقونة الأربعة fileالصورة في الكاميرا_قبلview_resource.txt file في مجلد الموارد، على سبيل المثالampلو: أيقونة ../resource/icons/process_bar_240x14.h
- تنفيذ الكاميرا_preview_resource_build.bat لإنشاء موارد الصور والأيقونات لإنشاء السلة file Camera_preview_resource.bin والمعلومات file Resources_information_table.txt (انظر الشكل 6).
- استنساخ رأس الرمز الأربعة fileعملية bar_240x14.h و virtual_face_blue_420x426.h و virtual_face_green_420x426.h و virtual_face_red_420x426.h من واجهة HMI الذكية
- حدد عنوان البداية على SDRAM وحجم الرموز في app_config.h. يبدأ العنوان بجوار صور تطبيق واجهة المستخدم الرسومية. يتم إنشاء الحجم في المعلومات file. #حدد APP_ICONS_BASE (APP_RES_SHMEM_BASE + APP_LVGL_IMGS_SIZE) #حدد APP_ICONS_SIZE 0x107c40
- قم بتحديث الحجم المخصص لقسم الذاكرة المسمى res_sh_mem إلى 0x200000 عن طريق إعادة تعريفه في app_config.h: #define RES_SHMEM_TOTAL_SIZE 0x200000 والإعداد المقابل في Project > Properties > C/C++ Build > إعدادات MCU.
- أضف حجم الرمز إلى الحجم الإجمالي للمورد الذي تم تحميله من Flash إلى SDRAM في الوظيفة APP_LoadResource() الرئيسية file lvgl_gui_face_rec_cm7.cpp: memcpy((void *)APP_LVGL_IMGS_BASE, pLvglImages, APP_LVGL_IMGS_SIZE + APP_ICONS_SIZE);
يلاحظ: لإكمال ميزة التعرف على الوجه، يلزم دعم تطبيق LVGL GUI. يتم استدعاء وظائف رد اتصال واجهة المستخدم في مخرجات UI HAL بواسطة تطبيق LVGL GUI لمعالجة الأحداث من شاشة واجهة المستخدم. من ناحية أخرى، يستدعي HAL لواجهة المستخدم الخاصة بالإخراج واجهات برمجة التطبيقات من تطبيق LVGL GUI لتحديث واجهة المستخدم لإظهار النتيجة والحالة. يعد تطوير تطبيق LVGL GUI مستقلاً نسبيًا وقد تم تقديمه في القسم 4.3.
4.1.5 بدء تشغيل أجهزة HAL ومديريها للتعرف على الوجوه
يتم تشغيل خوارزمية الرؤية الممكّنة HAL وإخراج واجهة المستخدم HAL ومديريها بشكل رئيسي file
lvgl_gui_face_rec_cm7.cpp بعد تحويلات التطوير على إطار العمل على النحو التالي:
- قم بتضمين الرأس file المتعلقة بمديري HAL عن طريق إضافة سطر التعليمات البرمجية:
- #تتضمن ”fwk_output_manager.h“
- #تتضمن "fwk_vision_algo_manager.h"
- قم بتعريف أجهزة HAL:
- HAL_VALGO_DEV_DECLARE(OasisGUIFaceRec);
- HAL_OUTPUT_DEV_DECLARE(UiGUIFaceRec);
- تسجيل أجهزة HAL:
- HAL_VALGO_DEV_REGISTER(OasisGUIFaceRec, ret);
- HAL_OUTPUT_DEV_REGISTER(UiGUIFaceRec, ret);
- تهيئة المديرين:
- FWK_MANAGER_INIT(VisionAlgoManager, ret);
- FWK_MANAGER_INIT(OutputManager, ret);
- ابدأ المديرين:
- FWK_MANAGER_START(VisionAlgoManager، VISION_ALGO_MANAGER_TASK_PRIORITY، ret)؛
- FWK_MANAGER_START(مدير الإخراج، OUTPUT_MANAGER_TASK_PRIORITY، ret);
- تحديد أولوية مهام المدير:
- #تعريف VISION_ALGO_MANAGER_TASK_PRIORITY 3
- #تعريف OUTPUT_MANAGER_TASK_PRIORITY 1
إضافة دعم قاعدة بيانات الوجه على الإطار
يتم الوصول إلى بيانات ميزة الوجه المسجلة في قاعدة بيانات الوجه المخزنة على Flash عبر القليل file نظام. تم توضيح خطوات إضافة دعم قاعدة بيانات الوجه أدناه.
إضافة برامج تشغيل لتخزين فلاش
انسخ برنامج تشغيل واجهة Flash FlexSPI files fsl_flexspi.c وfsl_flexspi.h، وبرنامج تشغيل تشفير البيانات files fsl_caam.c و fsl_caam.h من المسار SDK_2_13_0_MIMXRT1170-EVK\devices \MIMRX1176\drivers\ إلى مجلد برامج التشغيل الخاص بالملف السابقampلو سو.
أضف الدعم على مستوى اللوحة
- أضف تعريفات FlexSPI المستخدمة لجهاز الفلاش الموجود على اللوحة في اللوحة.ح:
- #تعريف BOARD_FLEXSPI FLEXSPI1
- #define BOARD_FLEXSPI_CLOCK kCLOCK_FlexSpi1
- #define BOARD_FLEXSPI_AMBA_BASE FlexSPI1_AMBA_BASE
- انسخ العوامل والتكوينات fileملفات جهاز الفلاش flexspi_nor_flash_ops.c و flexspi_nor_flash_ops.h و sln_flash_config.c و sln_flash_config_w25q256jvs.h و andsln_flash_ops.h ضمن المسار الذكي HMI\coffee_machine\cm7\source\flash_config\ إلى لوحة المجلدات السابقةampلو سو.
- قم بإلغاء تحديد "استبعاد المورد من البناء" في C/C++ Build > الإعدادات بعد النقر بزر الماوس الأيمن على fileاسم الأشخاص وفتح الخصائص لتمكين دمجها في المشروع.
- قم بتغيير الرأس المتضمن fileقم بتسمية sln_flash_config.h إلى sln_flash_config_w25q256jvs.h في sln_flash_config.c وflexspi_nor_flash_ops.h.
- قم بتعيين مصدر الساعة FlexSPI1 في file Clock_config.c يشير إلى تطبيق ماكينة القهوة.
إضافة محول ودعم المستوى المتوسط
- انسخ fileيتم استخدام sln_flash.c وsln_flash.h وsln_encrypt.c وsln_encrypt.h كبرامج تشغيل محول لـ file النظام والتطبيق من مسار HMI الذكي\coffee_machine\cm7\source\ إلى مصدر المجلد السابقampلو. تحديث الجديد files:
- قم بإلغاء تحديد "استبعاد المورد من البناء" عليها للبناء.
- قم بتغيير كل العناوين المضمنة file اسم sln_flash_config.h إلى sln_flash_config_w25q256jvs.h.
- انسخ المجلد fileنظام يحتوي على واجهات برمجة التطبيقات للقليل fileالنظام وبرنامج تشغيل HAL من Smart HMI \coffee_machine\cm7\source\ إلى exampلو سو. وتحديث للمجلد الجديد:
- قم بإلغاء تحديد "استبعاد المورد من البناء" عليه للبناء.
- أضف مسار التضمين له في إعدادات المشروع: "${workspace_loc:/${ProjName}/fileنظام}"
- قم بتغيير الرأس المتضمن file اسم sln_flash_config.h إلى sln_flash_config_w25q256jvs.h وfica_definition.h إلى app_config.h في file sln_flash_littlefs.h.
- انسخ المجلد littlefs الذي يحتوي على البرنامج الأوسط – little fileالنظام من المسار SDK_2_13_0_ MIMXRT1170-EVK\middleware\ إلى السابقampلو سو. وقم بتحديث المجلد الجديد:
- قم بإلغاء تحديد "استبعاد المورد من البناء" عليه للبناء.
- أضف مسار التضمين له في إعدادات المشروع: "${workspace_loc:/${ProjName}/littlefs}"
إضافة برامج تشغيل HAL
- هناك نوعان من أجهزة HAL – file يتم دعم قاعدة بيانات النظام والوجه HAL لميزة الوصول إلى قاعدة البيانات وقد تم تنفيذها بالفعل في إطار العمل دون أي تغيير. قم بتمكينها عن طريق إضافة التعريفات أدناه في board_define.h:
- #تعريف ENABLE_FLASH_DEV_Littlefs
- #تعريف ENABLE_FACEDB
وقم بتغيير اسم قاعدة بيانات الوجه للحبيب السابقample: #define OASIS_FACE_DB_DIR “oasis_gui_face_rec”
أضف الدعم على مستوى التطبيق
- تحديث الرئيسي file lvgl_gui_face_rec_cm7.cpp:
- قم بتضمين الرأس file المتعلقة بالفلاش file مدير HAL للنظام عن طريق إضافة سطر التعليمات البرمجية: #include "fwk_flash.h"
- أعلن وسجل file جهاز نظام هال:
- HAL_FLASH_DEV_DECLARE(ليتلفس);
- HAL_FLASH_DEV_REGISTER(Littlefs, ret);
ملحوظة: ال file يجب تسجيل جهاز HAL الخاص بالنظام قبل تهيئة كافة مديري الأجهزة في الوظيفة APP_InitFramework().
- قم باستدعاء الدالة BOARD_ConfigMPU() في APP_BoardInit() لتكوين MPU.
- ضبط file تعيين النظام على فلاش في file app_config.h عن طريق تحديد تعريفات الماكرو المستخدمة في ملف file sln_flash_littlefs.h:
- #تعريف FICA_IMG_FILE_SYS_ADDR (FLASH_IMG_SIZE + RES_SHMEM_TOTAL_SIZE)
- #تعريف FICA_FILE_SYS_SIZE (0x280000)
التكوينات
يتم تنفيذ بعض الرموز المتعلقة بالفلاش في منطقة SRAM ITC للحصول على أداء كافٍ. انسخ مجلدات الارتباط النصية التي تحتوي على تكوينات الرابط من المسار الذكي HMI\coffee_machine\cm7\ إلى الملف السابقampلو سو.
تنفيذ تطبيق LVGL GUI
إن تطوير تطبيق LVGL GUI استنادًا إلى إطار العمل يستدعي واجهات برمجة التطبيقات من مخرجات UI HAL ويوفر واجهات برمجة التطبيقات لإخراج UI HAL (راجع القسم 4.1.3 للتعرف على تنفيذ مخرجات UI HAL).
ومع ذلك، يعتمد التنفيذ التفصيلي لتطبيق LVGL GUI على متطلبات التطبيق وتصميمه. تطبيق واجهة المستخدم الرسومية في هذا السابقampتم تصميم le كما هو موضح في بداية القسم 4.
وفيما يلي مقدمات التنفيذ:
- يتم تنفيذ الرموز المخصصة في custom.c وcustom.h المقدمة من GUI Guider كواجهة بين مشروع GUI Guider ومشروع النظام المضمن.
- أضف الوظائف الجديدة المسماة gui_xxx() في custom.c لتحقيق الوظائف التالية:
- لإخراج تطبيق UI HAL وGUI لتحديث واجهة المستخدم.
- لكي يقوم تطبيق GUI بتشغيل الأحداث عن طريق استدعاء وظائف رد اتصال واجهة المستخدم من إخراج UI HAL.
على سبيل المثالample، تستدعي الوظيفة الجديدة gui_event_face_rec_action() وظائف رد اتصال واجهة المستخدم للتعامل مع أحد أحداث تسجيل الوجه والتعرف على الوجه وحذف المستخدم الذي يتم تشغيله من تطبيق واجهة المستخدم الرسومية عند النقر فوق الزر ذي الصلة.
ملاحظة: يتم استدعاء الدالة gui_set_virtual_face() في إخراج UI HAL لما قبلview يجب تنفيذ الوضع في custom.c:
- وظيفة الاستنساخ gui_set_virtual_face() من واجهة HMI الذكية\coffee_machine\cm4\custom \custom.c.
- قم بتغيير اسم الأداة home_img_cameraPreview إلى screen_img_camera_preview في الوظيفة.
- قم بتنفيذ وظائف رد اتصال واجهة المستخدم بنفس النموذج الأولي لجميع الوظائف الموجودة في مخرجات UI HAL تحت سيطرة تعريف الماكرو #ifndef RT_PLATFORM في custom.c لكونها متوافقة مع مشروع GUI Guider لأن هذه الوظائف في مخرجات UI HAL تعتمد على منصة مدمجة. في custom.c، تعتمد على جهاز محاكاة واجهة المستخدم الرسومية وتكون مستقلة عن النظام الأساسي المضمن. على سبيل المثالample، يتم تنفيذ رد اتصال تسجيل الوجه على النحو التالي لتشغيل محاكي GUI Guider: #ifndef RT_PLATFORM void UI_Registration_Callback() { gui_hide_del_user_btn(true); s_InAction = false; يعود؛ }
ملحوظة: ارجع إلى نفس النموذج الأولي للوظيفة المقدمة في الخطوة 6 من القسم 4.1.3
يتم تعيين تعريف الماكرو RT_PLATFORM على إعدادات مشروع MCUXpresso كما هو موضح في الشكل 7: - قم بتعريف جميع الوظائف المسماة UI_xxx_Callback() وgui_xxx() في custom.h وأضف custom.h المضمن في Smart_tlhmi_event_descriptor.h لمشاركة واجهات برمجة التطبيقات GUI مع مخرجات واجهة المستخدم HAL.
- أضف الوظائف الجديدة المسماة gui_xxx() في custom.c لتحقيق الوظائف التالية:
- تطوير واجهة المستخدم الرسومية على GUI Guider:
- استنساخ مجلد الكاميرا مسبقاview يحتوي على برنامج مشروع GUI Guider في المجلد gui_guider في حزمة البرامج الأساسية lvgl_gui_camera_preview_سم7. قم بتغيير الاسم ذي الصلة Camera_preview إلىface_rec للحبيب السابق الجديدampليه.
- انسخ ملف custom.c و custom المحدثين أعلاه. h إلى برنامج مشروع GUI Guider الجديد.
- افتح مشروعface_rec الجديد على GUI Guider. التحديث على النحو التالي:
- أضف الزر الجديد المسمى حذف المستخدم. أضف العلامة "مخفي" إليها بحيث يكون الزر مخفيًا عند بدء تشغيل تطبيق واجهة المستخدم الرسومية.
- أضف سطر التعليمات البرمجية لاستدعاء API gui_event_face_rec_action() مع معلمة معرف حدث مختلفة على المشغل "تم الإصدار" في إعداد الحدث لجميع أزرار التسجيل والتعرف على المستخدم وحذفه لبدء أحداث تسجيل الوجه والتعرف على الوجه وحذف المستخدم. الشكل 8 يوضح كود حدث زر التسجيل :
- قم بتحديث الكود الذي تم إنشاؤه من GUI Guider إلى مشروع MCUXpresso.
- استبدل المحتويات باستثناء صور المجلدات الموجودة في المجلد الذي تم إنشاؤه من مشروع MCUXpresso SW بالمحتويات المقابلة لها في المجلد الذي تم إنشاؤه من مشروع GUI Guider SW.
ملحوظة: لمزيد من التفاصيل حول التعديلات المقدمة أعلاه، تحقق من السابقينampلو البرمجيات في https://mcuxpresso.nxp.com/appcodehub.
التحقق مع السابقينampلو المشروع
للحصول على السابقينampحزمة البرامج التي تحتوي على الموارد والأدوات الخاصة بمذكرة التطبيق هذه، تفضل بزيارة: https://mcuxpresso.nxp.com/appcodehub. افتح السابقampالمشروع على MCUXpresso IDE. بناء وبرمجة .axf file إلى العنوان 0x30000000 وبرمجة سلة الموارد file Camera_preview_resource.bin إلى العنوان 0x30800000.
التعرف على الوجوه LVGL GUI على سبيل المثالampلو يعمل بشكل طبيعي على النحو التالي:
- قبلview: مع تشغيل الطاقة، يظهر تدفق الفيديو الذي تم التقاطه بواسطة الكاميرا في المنطقة المحددة بالكاميرا مسبقًاview على شاشة واجهة المستخدم الرسومية. تعرض تسمية الحالة "Preview…”. للحصول على التفاصيل، انظر الشكل 3. الزر حذف المستخدم مخفي. عند النقر فوق المنطقة خارج الأزرار والصور، فإنه يظهر ما قبلview قم بالحالة كما هو مذكور أعلاه بعد انتهاء إجراء تسجيل الوجه أو التعرف عليه.
- تسجيل:
- تارتاب: عند النقر على زر التسجيل، يبدأ تسجيل الوجه. تتغير تسمية الحالة لعرض "التسجيل..."، ويظهر مستطيل دليل الوجه باللون الأزرق، ويبدأ شريط التقدم في إظهار التقدم. تأكد من ظهور وجه المستخدم في مستطيل دليل الوجه الأزرق للتسجيل.
- النجاح: تظهر تسمية الحالة "التسجيل...موافق" ورقم معرف المستخدم المسجل، ويصبح مستطيل دليل الوجه باللون الأحمر إذا كان تسجيل الوجه ناجحًا قبل أن يظهر التقدم كاملاً على الشريط.
- الفشل -> المهلة: تعرض تسمية الحالة "التسجيل... مهلة" إذا كان تسجيل الوجه لا يزال فاشلاً عندما يظهر التقدم ممتلئًا على الشريط.
- فشل -> تكرار: تظهر تسمية الحالة "التسجيل...فشل"، يصبح مستطيل دليل الوجه أخضر إذا تم التعرف على الوجه المسجل قبل أن يظهر التقدم كاملاً على الشريط.
- ecognition:
- بدء التشغيل: عند النقر فوق زر التعرف، يبدأ التعرف على الوجه. تتغير تسمية الحالة لعرض "التعرف..."، ويظهر مستطيل دليل الوجه باللون الأزرق، ويبدأ شريط التقدم في إظهار التقدم. تأكد من ظهور وجه المستخدم في مستطيل دليل الوجه الأزرق للتسجيل.
- النجاح: تعرض تسمية الحالة "Recognition...OK" ورقم معرف المستخدم الذي تم التعرف عليه، ويصبح مستطيل دليل الوجه أخضر إذا نجح التعرف على الوجه قبل أن يظهر التقدم كاملاً على الشريط. عند هذه النقطة، يظهر الزر حذف المستخدم. وهذا يعني أنه لا يُسمح بحذف المستخدم إلا عندما يتم التعرف عليه.
- مرض: تعرض تسمية الحالة "التعرف...انتهت المهلة" إذا كان التعرف على الوجه لا يزال فاشلاً عندما يظهر التقدم كاملاً على الشريط.
- حذف المستخدم: عند النقر فوق الزر "حذف المستخدم"، بعد نجاح التعرف على الوجه، تتغير تسمية الحالة لعرض "حذف المستخدم...موافق" مع تحول مستطيل دليل الوجه إلى اللون الأزرق وإظهار التقدم كاملاً على الشريط. الزر حذف المستخدم مخفي مرة أخرى. يتم حذف الوجه/المستخدم الذي تم التعرف عليه من قاعدة البيانات. وهذا يعني أنه لا يمكن التعرف على هذا الوجه/المستخدم حتى يتم تسجيله مرة أخرى.
ملاحظة حول الكود المصدري في المستند
Exampكود le الموضح في هذا المستند له حقوق النشر التالية وترخيص BSD-3-Clause:
حقوق النشر 2024 NXP Redistribution والاستخدام في أشكال المصدر والثنائية ، مع أو بدون تعديل ، مسموح بها بشرط استيفاء الشروط التالية:
- يجب أن تحتفظ عمليات إعادة توزيع الكود المصدر بإشعار حقوق النشر المذكور أعلاه، وقائمة الشروط، وإخلاء المسؤولية التالي.
- يجب أن تقوم عمليات إعادة التوزيع في شكل ثنائي بإعادة إنتاج إشعار حقوق النشر أعلاه ، ويجب توفير قائمة الشروط هذه وإخلاء المسؤولية التالي في الوثائق و / أو المواد الأخرى مع التوزيع.
- لا يجوز استخدام اسم صاحب حقوق الطبع والنشر أو أسماء المساهمين فيه لتأييد أو الترويج للمنتجات المشتقة من هذا البرنامج دون الحصول على إذن كتابي مسبق محدد
يتم توفير هذا البرنامج من قبل أصحاب حقوق النشر والمساهمين "كما هو" ويتم إخلاء المسؤولية عن أي ضمانات صريحة أو ضمنية، بما في ذلك على سبيل المثال لا الحصر، الضمانات الضمنية لقابلية التسويق والملاءمة لغرض معين. لن يكون حامل حقوق الطبع والنشر أو المساهمين مسؤولين بأي حال من الأحوال عن أي أضرار مباشرة أو غير مباشرة أو عرضية أو خاصة أو نموذجية أو تبعية (بما في ذلك على سبيل المثال لا الحصر، شراء سلع أو خدمات بديلة؛ أو فقدان الاستخدام أو البيانات أو الأرباح؛ أو انقطاع الأعمال) مهما كان سببها وعلى أي نظرية من نظريات المسؤولية، سواء كانت عقدية أو مسؤولية صارمة أو تقصيرية (بما في ذلك الإهمال أو غير ذلك) تنشأ بأي شكل من الأشكال عن استخدام هذا البرنامج، حتى لو تم إخطارهم بإمكانية حدوث مثل هذا الضرر.
تاريخ المراجعة
المعلومات القانونية
التعاريف
مسودة — تشير حالة المسودة في المستند إلى أن المحتوى لا يزال قيد المراجعة الداخلية.view وتخضع للموافقة الرسمية، والتي قد تؤدي إلى تعديلات أو إضافات. لا تقدم شركة NXP Semiconductors أي تعهدات أو ضمانات فيما يتعلق بدقة أو اكتمال المعلومات المضمنة في نسخة مسودة من المستند ولن تتحمل أي مسؤولية عن عواقب استخدام هذه المعلومات.
تنصل
- الضمان والمسؤولية المحدودة - يُعتقد أن المعلومات الواردة في هذه الوثيقة دقيقة وموثوقة. ومع ذلك ، لا تقدم NXP Semiconductors أي تعهدات أو ضمانات ، صريحة أو ضمنية ، فيما يتعلق بدقة أو اكتمال هذه المعلومات ولن تتحمل أي مسؤولية عن عواقب استخدام هذه المعلومات. لا تتحمل NXP Semiconductors أي مسؤولية عن المحتوى الوارد في هذا المستند إذا تم توفيره بواسطة مصدر معلومات خارج NXP Semiconductors.
لا تتحمل شركة NXP أشباه الموصلات بأي حال من الأحوال المسؤولية عن أي أضرار غير مباشرة أو عرضية أو عقابية أو خاصة أو تبعية (بما في ذلك - على سبيل المثال لا الحصر - خسارة الأرباح أو المدخرات المفقودة أو انقطاع الأعمال أو التكاليف المتعلقة بإزالة أو استبدال أي منتجات أو رسوم إعادة العمل) سواء أو لا تستند هذه الأضرار إلى ضرر (بما في ذلك الإهمال) أو الضمان أو خرق العقد أو أي نظرية قانونية أخرى.
بصرف النظر عن أي أضرار قد يتكبدها العميل لأي سبب من الأسباب ، فإن المسؤولية الإجمالية والتراكمية لشركة NXP Semiconductors تجاه العميل عن المنتجات الموضحة هنا ستكون محدودة وفقًا لشروط وأحكام البيع التجاري لأشباه الموصلات من NXP. - الحق في إجراء التغييرات - تحتفظ NXP Semiconductors بالحق في إجراء تغييرات على المعلومات المنشورة في هذا المستند ، بما في ذلك على سبيل المثال لا الحصر المواصفات وأوصاف المنتج ، في أي وقت وبدون إشعار. تحل هذه الوثيقة محل جميع المعلومات المقدمة قبل نشرها وتحل محلها.
- ملائمة للاستخدام - منتجات NXP لأشباه الموصلات ليست مصممة أو مصرح بها أو مضمونة لتكون مناسبة للاستخدام في دعم الحياة ، أو الأنظمة أو المعدات الحرجة للحياة أو السلامة الحرجة ، ولا في التطبيقات التي يمكن توقع حدوث فشل أو عطل فيها في منتج NXP لأشباه الموصلات بشكل معقول إصابة شخصية أو وفاة أو ممتلكات خطيرة أو أضرار بيئية. لا تقبل NXP Semiconductors ومورديها أي مسؤولية عن تضمين و / أو استخدام منتجات NXP Semiconductors في هذه المعدات أو التطبيقات ، وبالتالي فإن هذا التضمين و / أو الاستخدام يكون على مسؤولية العميل الخاصة.
- التطبيقات - التطبيقات الموضحة هنا لأي من هذه المنتجات هي للأغراض التوضيحية فقط. لا تقدم NXP Semiconductors أي تعهد أو ضمان بأن هذه التطبيقات ستكون مناسبة للاستخدام المحدد دون مزيد من الاختبار أو التعديل.
يتحمل العملاء مسؤولية تصميم وتشغيل تطبيقاتهم ومنتجاتهم باستخدام منتجات NXP Semiconductors، ولا تتحمل NXP Semiconductors أي مسؤولية عن أي مساعدة في التطبيقات أو تصميم منتج العميل. تقع على عاتق العميل وحده مسؤولية تحديد ما إذا كان منتج NXP Semiconductors مناسبًا ومناسبًا لتطبيقات العميل ومنتجاته المخططة، بالإضافة إلى التطبيق والاستخدام المخطط له من قبل عميل (عملاء) الطرف الثالث التابع للعميل. يجب على العملاء توفير التصميم المناسب وضمانات التشغيل لتقليل المخاطر المرتبطة بتطبيقاتهم ومنتجاتهم. لا تقبل شركة NXP Semiconductors أي مسؤولية تتعلق بأي تقصير أو ضرر أو تكاليف أو مشكلة تعتمد على أي ضعف أو تقصير في تطبيقات العميل أو منتجاته، أو التطبيق أو الاستخدام من قبل عميل (عملاء) الطرف الثالث التابع للعميل. يتحمل العميل مسؤولية إجراء جميع الاختبارات اللازمة لتطبيقات العميل ومنتجاته باستخدام منتجات NXP Semiconductors لتجنب حدوث خلل في التطبيقات والمنتجات أو التطبيق أو الاستخدام من قبل عميل (عملاء) الطرف الثالث التابع للعميل. لا تقبل NXP أي مسؤولية في هذا الصدد. - شروط وأحكام البيع التجاري — تُباع منتجات NXP Semiconductors وفقًا للشروط والأحكام العامة للبيع التجاري، كما هو منشور على https://www.nxp.com/profile/ الشروط ، ما لم يتم الاتفاق على خلاف ذلك في اتفاقية فردية مكتوبة سارية المفعول. في حالة إبرام اتفاق فردي ، يتم تطبيق شروط وأحكام الاتفاقية المعنية فقط. تعترض NXP بموجب هذه الاتفاقية صراحةً على تطبيق الشروط والأحكام العامة للعميل فيما يتعلق بشراء منتجات NXP لأشباه الموصلات من قبل العميل.
- الرقابة على الصادرات - قد تخضع هذه الوثيقة بالإضافة إلى العنصر (العناصر) الموصوفة هنا للوائح الرقابة على الصادرات. قد يتطلب التصدير إذنًا مسبقًا من السلطات المختصة.
- ملاءمة الاستخدام في المنتجات غير المؤهلة للسيارات — ما لم ينص هذا المستند صراحة على أن منتج NXP Semiconductors هذا مؤهل للسيارات، فإن المنتج غير مناسب للاستخدام في السيارات. إنه غير مؤهل ولا يتم اختباره وفقًا لاختبارات السيارات أو متطلبات التطبيق. لا تتحمل شركة NXP Semiconductors أي مسؤولية عن تضمين و/أو استخدام المنتجات المؤهلة غير المتعلقة بالسيارات في معدات أو تطبيقات السيارات.
في حالة استخدام العميل للمنتج للتصميم والاستخدام في تطبيقات السيارات وفقًا لمواصفات ومعايير السيارات ، يجب على العميل (أ) استخدام المنتج دون ضمان NXP لأشباه الموصلات للمنتج لتطبيقات السيارات هذه ، والاستخدام والمواصفات ، و ( ب) عندما يستخدم العميل المنتج لتطبيقات السيارات بخلاف مواصفات NXP Semiconductors ، يكون هذا الاستخدام على مسؤولية العميل وحده ، و (ج) يقوم العميل بتعويض NXP تمامًا عن أي مسؤولية أو أضرار أو مطالبات فاشلة ناتجة عن تصميم العميل واستخدامه المنتج لتطبيقات السيارات التي تتجاوز الضمان القياسي لأشباه الموصلات NXP ومواصفات منتجات NXP Semiconductors. - الترجمات - النسخة غير الإنجليزية (المترجمة) من المستند ، بما في ذلك المعلومات القانونية في هذا المستند ، هي للإشارة فقط. تسود النسخة الإنجليزية في حالة وجود أي تعارض بين النسختين المترجمة والإنجليزية.
- حماية - يدرك العميل أن جميع منتجات NXP قد تكون عرضة لنقاط ضعف غير محددة أو قد تدعم معايير الأمان أو المواصفات المحددة مع قيود معروفة. يتحمل العميل مسؤولية تصميم وتشغيل تطبيقاته ومنتجاته طوال دورة حياتها لتقليل تأثير هذه الثغرات الأمنية على تطبيقات ومنتجات العميل. تمتد مسؤولية العميل أيضًا إلى التقنيات المفتوحة و / أو المسجلة الملكية التي تدعمها منتجات NXP لاستخدامها في تطبيقات العميل. NXP لا تتحمل أي مسؤولية عن أي ثغرة أمنية. يجب على العميل التحقق بانتظام من تحديثات الأمان من NXP ومتابعتها بشكل مناسب. يجب على العميل اختيار المنتجات ذات الميزات الأمنية التي تلبي على أفضل وجه القواعد واللوائح والمعايير الخاصة بالتطبيق المقصود واتخاذ قرارات التصميم النهائية فيما يتعلق بمنتجاته ويكون مسؤولاً بمفرده عن الامتثال لجميع المتطلبات القانونية والتنظيمية والأمنية المتعلقة بمنتجاته ، بغض النظر بأي معلومات أو دعم قد توفره NXP.
لدى NXP فريق الاستجابة لحوادث أمان المنتج (PSIRT) (يمكن الوصول إليه على PSIRT@nxp.com) الذي يدير التحقيق وإعداد التقارير وإصدار الحلول لنقاط الضعف الأمنية لمنتجات NXP.
NXP BV — NXP BV ليست شركة تشغيل ولا تقوم بتوزيع أو بيع المنتجات.
العلامات التجارية
يلاحظ: جميع العلامات التجارية وأسماء المنتجات وأسماء الخدمات والعلامات التجارية المشار إليها هي ملك لأصحابها.
NXP — العلامة التجارية والشعار هي علامات تجارية لشركة NXP BV
AMBA و Arm و Arm7 و Arm7TDMI و Arm9 و Arm11 و Artisan و big.LITTLE و Cordio و CoreLink و CoreSight و Cortex و DesignStart و DynamIQ و Jazelle و Keil و Mali و Mbed و Mbed Enabled و NEON و POP و RealViewو SecurCore و Socrates و Thumb و TrustZone و ULINK و ULINK2 و ULINK-ME و ULINK-PLUS و ULINKpro و μVision و Versatile - هي علامات تجارية و / أو علامات تجارية مسجلة لشركة Arm Limited (أو الشركات التابعة لها أو الشركات التابعة لها) في الولايات المتحدة و / أو في مكان آخر. قد تكون التكنولوجيا ذات الصلة محمية بموجب أي أو كل براءات الاختراع وحقوق التأليف والنشر والتصاميم والأسرار التجارية. كل الحقوق محفوظة.
- i.MX — هي علامة تجارية لشركة NXP BV
- جي لينك — هي علامة تجارية لشركة SEGGER Microcontroller GmbH.
Microsoft وAzure وThreadX — هي علامات تجارية مملوكة لمجموعة شركات Microsoft.
يرجى العلم بأن الإشعارات الهامة المتعلقة بهذه الوثيقة والمنتج(المنتجات) الموضحة هنا، قد تم تضمينها في قسم "المعلومات القانونية".
© 2024 NXP BV
لمزيد من المعلومات، يرجى زيارة: https://www.nxp.com
- تاريخ الإفراج: 19 أبريل 2024
- معرف الوثيقة: AN14263
التعليمات
س: ما هو الغرض الرئيسي من هذا المنتج؟
ج: الغرض الرئيسي هو تمكين وظيفة التعرف على الوجوه باستخدام نموذج خوارزمية رؤية AI&ML مع واجهة مستخدم رسومية بسيطة من LVGLampعلى لوحة SLN-TLHMI-IOT.
س: كيف يمكن للمطورين الاستفادة من ملاحظة التطبيق هذه؟
ج: يمكن للمطورين تعلم كيفية تنفيذ التعرف على الوجه في إطار العمل خطوة بخطوة باستخدام المثال المقدمampفهم وفهم مديري الأجهزة وأجهزة HAL وآليات الأحداث المعنية.
المستندات / الموارد
![]() |
NXP AN14263 تنفيذ التعرف على الوجوه LVGL GUI على Framewor [بي دي اف] دليل المستخدم AN14263 تنفيذ التعرف على الوجه LVGL GUI على Framewor، AN14263، تنفيذ التعرف على الوجه LVGL GUI على Framewor، التعرف على الوجه LVGL GUI على Framewor، التعرف على الوجه على Framewor، التعرف على Framewor |