NXP AN14263 Framewor-da LVGL GUI yuzni aniqlashni amalga oshirish
Mahsulot haqida ma'lumot
Texnik xususiyatlari
- Mahsulot nomi: Framework-da LVGL GUI yuzni aniqlash
- Hujjatni qayta ko'rib chiqish: 1 yil 19-2024 aprel
- Kalit so‘zlar: Yuzni tanish, LVGL GUI, Framework
Mahsulotdan foydalanish bo'yicha ko'rsatmalar
- tugadiview
Ushbu mahsulot oddiy LVGL GUI ex bilan yuzni aniqlash funksiyasini amalga oshirish uchun ramkada yuzni aniqlash uchun AI va ML ko'rish algoritmi modelini beradi.ampSLN-TLHMI-IOT platasida. - Ramka tugadiview
Yechim dasturiy ta'minoti qurilmalarni boshqarish uchun mas'ul bo'lgan qurilma menejerlari, asosiy tafsilotlarni mavhumlash uchun HAL qurilmalari va turli qurilmalar o'rtasidagi aloqa hodisalarini o'z ichiga olgan ramka arxitekturasi atrofida ishlab chiqilgan. - Xususiyatlari
Mahsulot yuzni aniqlash funksiyasini oldindan kamera orqali amalga oshirish imkonini beradiview GUI ekranida yuzni roʻyxatdan oʻtkazish, tanib olish va oʻchirishni ishga tushirish uchun tugmalar mavjud. Roʻyxatdan oʻtgan yuz maʼlumotlari a orqali Flashda saqlanadi file tizimi. - Ilova eslatmasining mazmuni
Ilova eslatmasida LVGL GUI ekrani, oldindan kamerasi mavjudview va yuz bilan bog'liq harakatlar uchun tugmalar. Bu ishlab chiquvchilarga ramkani tushunishga yordam beradi va taqdim etilgan sobiq yordamida yuzni aniqlashni qanday amalga oshirishni amalga oshiradiample.
tugadiview
NXP aqlli HMI ilovalariga qaratilgan SLN-TLHMI-IOT nomli yechimlarni ishlab chiqish to'plamini ishga tushirdi. U bitta NXP i.MX RT117H MCUda amalga oshirilgan ML ko‘rish, ovoz va grafik interfeysga ega aqlli HMI imkonini beradi. SDK asosida yechim dasturiy ta'minoti moslashuvchan dizaynlar va ko'rish va ovoz funksiyalarini moslashtirishni qo'llab-quvvatlaydigan ramka deb nomlangan dizayn asosida qurilgan. Foydalanuvchilarga dasturiy ta'minot platformasidan yaxshiroq foydalanishga yordam berish uchun ba'zi asosiy hujjatlar taqdim etiladi, masalanample, dasturiy ta'minotni ishlab chiqish bo'yicha foydalanuvchi qo'llanmasi. Qo'llanma asosiy dasturiy ta'minot dizayni va yechimning barcha komponentlarini qamrab oluvchi ilovalarning arxitekturasini, shu jumladan ishlab chiquvchilarga SLN-TLHMI-IOT yordamida o'z ilovalarini osonroq va samaraliroq amalga oshirishga yordam berish uchun ramka bilan tanishtiradi.
Yechim va tegishli hujjatlar haqida batafsil ma'lumot olish uchun tashrif buyuring web ML Vision, Ovozli va Grafik interfeysli i.MX RT117H asosidagi NXP EdgeReady Smart HMI yechimining sahifasi. Biroq, ishlab chiquvchilar uchun ushbu asosiy qo'llanmalarga murojaat qilgan holda o'zlarining aqlli HMI ilovalarini amalga oshirish hali ham oson emas. Rivojlanishni bosqichma-bosqich o'rganishga yordam beradigan bir qator amaliy eslatmalar rejalashtirilgan. Ushbu ilova eslatmasi Implement LVGL GUI Camera Pre dasturiga asoslanganview Framework bo'yicha (AN14147 hujjati). Ushbu ilova eslatmasi kamerada yuzni tanish funksiyasini amalga oshirish uchun ramkada yuzni aniqlash uchun AI va ML ko'rish algoritmi modelini qanday yoqishni tasvirlaydi.view oddiy LVGL GUI ex bilan GUI ekranidaampSLN-TLHMI-IOT platasida. Ariza eslatmasida sobiqample old kamerali LVGL GUI ekranini taqdim etadiview va ba'zi tugmalar yuzni ro'yxatga olish, tanib olish va o'chirishni ishga tushiradi. Ro'yxatdan o'tgan yuz ma'lumotlari Flash-da bir oz orqali saqlanadi file tizimi.
Yuqori darajada, ilova eslatmasi quyidagi tarkibni o'z ichiga oladi:
- Ramkada yuzni aniqlash funksiyasini yoqing.
- orqali ramkaga yuz ma'lumotlar bazasini qo'llab-quvvatlashni qo'shing file Flash-dagi tizim.
- LVGL GUI ilovasini amalga oshiring. Yuqoridagi kirishlar orqali ushbu hujjat ishlab chiquvchilarga quyidagilarga yordam beradi:
- Ramka va aqlli HMI yechimi dasturini chuqurroq tushuning.
- LVGL GUI ilovasi yordamida ularning AI va ML yuzini tanib olish tizimini ishlab chiqing.
Ramka tugadiview
Yechim dasturi asosan bir nechta turli qismlardan tashkil topgan ramka arxitekturasidan foydalanish asosida ishlab chiqilgan:
- Qurilma menejerlari - asosiy qism
- Hardware Abstraction Layer (HAL) qurilmalari
- Xabarlar / Voqealar
1-rasmda ko'rsatilganidek, tugadiview ramka mexanizmi quyidagilardan iborat:
Qurilma menejerlari tizim tomonidan ishlatiladigan qurilmalarni boshqarish uchun javobgardir. Har bir qurilma turi (kirish, chiqish va boshqalar) o'ziga xos turdagi qurilma menejeriga ega. Qurilmalar boshqaruvchisi qurilmalar roʻyxatdan oʻtgandan soʻng ishga tushgach, roʻyxatdan oʻtgan qurilmalarni ishga tushirgandan va ishga tushirgandan soʻng qurilmalar va boshqa boshqaruvchilarga maʼlumotlarni uzatish uchun xabarni kutadi va tekshiradi. HAL qurilmalari pastki darajadagi drayver kodining tepasida yozilgan bo'lib, ko'plab asosiy tafsilotlarni mavhumlash orqali kodning tushunarliligini oshirishga yordam beradi.
Voqealar - bu turli xil qurilmalar o'rtasida ularning menejerlari orqali ma'lumot almashish vositasi. Hodisa ishga tushirilganda, voqeani birinchi bo'lib qabul qilgan qurilma o'sha voqea haqida o'z menejeriga xabar beradi, so'ngra o'z navbatida voqeani qabul qilish uchun tayinlangan boshqa menejerlarni xabardor qiladi.
Ramkaning me'moriy dizayni uchta asosiy maqsadga yo'naltirilgan:
- Foydalanish qulayligi
- Moslashuvchanlik / ko'chirish
- Ishlash
Ramka ko'rish va boshqa mashinani o'rganish dasturlarini bozorga chiqarish vaqtini tezlashtirish maqsadida ishlab chiqilgan. Tez bozorga chiqish uchun dasturiy ta'minotni tushunish va o'zgartirish oson bo'lishi juda muhimdir. Ushbu maqsadni yodda tutgan holda, ramka arxitekturasini cheklovsiz va ishlash narxiga ega bo'lmasdan o'zgartirish oson.
Ramka haqida batafsil ma'lumot olish uchun Smart HMI dasturiy ta'minotini ishlab chiqish foydalanuvchi qo'llanmasiga qarang (MCU-SMHMI-SDUG hujjati).
Engil va ko'p qirrali grafik kutubxonasi (LVGL)
LVGL (Yengil va koʻp tomonlama grafika kutubxonasi) bu bepul va ochiq manbali grafik kutubxona boʻlib, foydalanish uchun qulay grafik elementlar, chiroyli vizual effektlar va kam xotira hajmi bilan oʻrnatilgan GUI yaratish uchun zarur boʻlgan hamma narsani taqdim etadi.
GUI yo'riqchisi
GUI Guider - bu NXP tomonidan taqdim etilgan foydalanuvchi uchun qulay grafik foydalanuvchi interfeysini ishlab chiqish vositasi bo'lib, u ochiq manba LVGL grafik kutubxonasi bilan yuqori sifatli displeylarni tez ishlab chiqish imkonini beradi. GUI Guider-ning sudrab olib tashlash muharriri minimal yoki umuman kodlashsiz grafik interfeys yaratish uchun vidjetlar, animatsiyalar va uslublar kabi LVGL-ning ko'plab xususiyatlaridan foydalanishni osonlashtiradi.
Bir tugmani bosish bilan siz ilovangizni simulyatsiya qilingan muhitda ishga tushirishingiz yoki uni maqsadli loyihaga eksport qilishingiz mumkin. GUI Guider-dan yaratilgan kod loyihangizga osongina qo'shilishi mumkin, bu ishlab chiqish jarayonini tezlashtiradi va ilovangizga o'rnatilgan foydalanuvchi interfeysini muammosiz qo'shish imkonini beradi. GUI Guider NXP-ning umumiy maqsadi va krossover MCU-lari bilan bepul foydalanish mumkin va bir nechta qo'llab-quvvatlanadigan platformalar uchun o'rnatilgan loyiha shablonlarini o'z ichiga oladi. GUI Guider-da LVGL va GUI-ni ishlab chiqish haqida ko'proq bilish uchun Light va universal Graphics Library va GUI Guider-ni tekshiring.
Rivojlanish muhiti
Birinchidan, sobiqni amalga oshirish uchun apparat va dasturiy ta'minot muhitini tayyorlang va sozlangample ramka ustida.
Uskuna muhiti
Uskuna muhiti sobiqni tekshirish uchun o'rnatiladiampga:
- NXP i.MX RT117H asosidagi aqlli HMI ishlab chiqish to'plami (SLN_TLHMI_IOT to'plami)
- 9 pinli Cortex-M adapteri va V7.84a yoki drayverning yangiroq versiyasiga ega SEGGER J-Link
Dasturiy ta'minot muhiti
Sobiq dasturni ishlab chiqish uchun dasturiy muhit yaratilganampga:
- MCUXpresso IDE V11.7.0
- GUI Guider V1.6.1-GA
- lvgl_gui_camera_preview_cm7 - masalanampishlab chiqishning asosiy dasturiy ta'minoti sifatida ikkinchi dastur eslatmasining kodi. Tafsilotlar uchun qarang https://mcuxpresso.nxp.com/appcodehub.
- RT1170 SDK V2.13.0 – ishlab chiqish uchun kod resursi sifatida.
- SLN-TLHMI-IOT dasturiy ta'minoti V1.1.2 - NXP GitHub omborida ishlab chiqish uchun kod resursi sifatida chiqarilgan aqlli HMI manba kodi. Tafsilotlar uchun qarang: GitHub – NXP/mcu-smhmi da v1.1.2
Dasturiy ta'minot muhitini sotib olish va sozlash haqida batafsil ma'lumot uchun qarang: SLN-TLHMI-IOT bilan ishlashni boshlash.
Ramka bo'yicha ko'rish arxitekturasi
Ramkadagi ko'rish arxitekturasi 2-rasmda ko'rsatilgan. HAL (OASIS_HAL) ko'rish algosi quyidagi jarayonlarga ega:
- UI HAL chiqishidan tegishli hodisalarni olgandan so‘ng, AI&ML ko‘rish algoritmi modeli orqali yuzni ro‘yxatdan o‘tkazish va tanib olishni amalga oshiring. Xulosa natijalarini algoritm modelidan UI HAL chiqishiga xabar qiling.
- Kichkina ma'lumotlar asosida yuz xususiyatlari ma'lumotlar bazasiga kirish (qo'shish, o'chirish...). file UI HAL chiqishidan tegishli hodisalarni olgandan so'ng FaceDB HAL API-larini chaqirish orqali tizim.
- Yuzni roʻyxatga olish va tanishni amalga oshirayotganda HAL kamerasidan kamera video ramkasini soʻrang.
Ramkada yuzni tanishni amalga oshiring
LVGL GUI yuzni aniqlash, masalanample (sobiqample keyinroq taqdim etiladi) bo'yicha ramka sobiq asosida amalga oshiriladiampImplement LVGL GUI Camera Pre dasturining kodlariview Framework bo'yicha (AN14147 hujjati).
Sobiq yuzni tanishni namoyish qilgani uchunample, GUI ilovasining asosiy funksiyasi (3-rasmdagi asosiy ekranga qarang) quyida tavsiflangan tarzda ishlab chiqilgan:
- GUI ilovasi roʻyxatdan oʻtish yoki tanib olish tugmachasini bosganda yuzni roʻyxatga olish yoki tanib olish hodisasini UI HAL chiqishiga ishga tushiradi. UI HAL chiqishi esa yuzni roʻyxatdan oʻtkazish muvaffaqiyatli boʻlgandan soʻng HAL koʻrish algosiga foydalanuvchi qoʻshilganligi haqida xabar beradi.
- GUI ilovasi foydalanuvchining yuzi tanilgandan so'ng Foydalanuvchini o'chirish tugmasini bosgandan so'ng UI HAL chiqishidagi foydalanuvchini o'chirish hodisasini ishga tushiradi.
- GUI ilovasi tugmalar va tasvirlar tashqarisidagi ekranni bosganda UI HAL chiqishiga ishlaydigan voha algosini to'xtatish hodisasini ishga tushiradi.
Sobiqni amalga oshirish uchun dasturiy ta'minot paketini tayyorlangample.
- lvgl_gui_camera_pre asosiy dasturini klonlashview_cm7. Loyiha nomini va asosiyni o'zgartiring filelvgl_gui_face_rec_cm7 ga nom bering.
- Ramka dasturiy ta'minotda yangilanishi kerak, chunki ramka yadrosi uchun manba kodlari GitHub'da 1.1.2 versiyasidan ommaviy bo'la boshladi.
- Ramka jildini GitHub'dan V1.1.2 nusxasi bilan almashtiring files fwk_log.h va fwk_common.h inc\ ostida, chunki ular ilova eslatmasi qatori uchun o'zgartirilgan. Operatsiyalar 4-rasmda ko'rsatilgan:
- Liblar guruhi ostidagi framework_cm7 papkasini oʻchiring va “Project > Properties > C/C++ Build > Settings > Tool Settings > MCU C++ Linker > Libraries-da sozlangan framework_cm7 kutubxonasini va uning qidiruv yoʻlini olib tashlang, chunki yadroning manba kodi taqdim etilgan.
Frameworkda yuzni tanish funksiyasini yoqing
Yuzni tanib olish xususiyati statik kutubxona sifatida taqdim etilgan ML ko‘rish algoritmi modeliga asoslangan - NXP tomonidan oasis lite ish vaqti kutubxonasi. Kutubxona kichik, yuqori samarali, moslashtirilgan va optimallashtirilgan AI kutubxonasidir. Model yuzni aniqlash, yuzni tanish, oynani aniqlash va tiriklikni aniqlashni o'z ichiga oladi. U asosan API OASISLT_run_extended() ni hodisalarni qayta qoʻngʻiroqlar orqali qoʻngʻiroq qiluvchiga natijalarni yangilashda yuzni aniqlash quvurini ishga tushirish va manba kadri maʼlumotlari, qayta qoʻngʻiroqlar va xotirani koʻrsatgandan soʻng yuz maʼlumotlar bazasiga qayta qoʻngʻiroqlar orqali maʼlumotlar bazasiga yuzlarni qoʻshish/yangilash/oʻchirish imkonini beradi. ishga tushirishda boshqa API OASISLT_init() ni chaqirish orqali kutubxona tomonidan foydalaniladigan hovuz. API-larni chaqirish va qayta qo'ng'iroq qilish funktsiyalari ramkaning HAL ko'rish algosida amalga oshiriladi.
Vizyon algo model kutubxonasini qo'shing
- Kutubxona va tegishli sarlavhani o'z ichiga olgan papka vohasidan nusxa oling file smart HMI\coffee_machine\cm7\libs\ dan sobiq papka kutubxonalarigaample SW.
- Sarlavhaning qidirish yo'lini qo'shing file Loyiha > Xususiyatlar > C/C++ Build > Sozlamalar > Asbob sozlamalari > MCU C kompilyatori > O‘z ichiga oladi va MCU C++ kompilyatori > O‘z ichiga oladi: “${workspace_loc:/${ProjName}/libs/oasis/include}”
- Loyiha > Xususiyatlar > C/C++ Build > Sozlamalar > MCU C+ + Linker > Kutubxonalar: liboasis_lite2D_DEFAULT_117f_ae.a “${workspace_loc:/${ProjName}/libs/oasis}” va makro taʼrifini lib va uning qidirish yoʻlini qoʻshing. Loyiha > Xususiyatlar > C/C++ Build > Sozlamalar > Asbob sozlamalari > MCU C kompilyatori > Preprotsessor va MCU C++ kompilyatori > Preprotsessor: SMART_TLHMI_2D-da funksiyani yoqing
Vision algo HAL ni yoqing
Vizyon algo HAL vision algo modelini ishga tushiradi va natijalarni undan hodisalarni olgandan so'ng UI chiqishi HALga javob beradi.
Uni yoqish uchun mavjud o'xshash HAL drayverini klonlang file bu erda quyidagi funktsiyalar amalga oshiriladi:
- Yuz ma'lumotlar bazasi operatsiyalari va hodisalarni qayta ishlashning qayta qo'ng'iroqlarini amalga oshiring.
- Voha kutubxonasining API-lariga qo'ng'iroq qilib, vision algo-ni ishga tushiring.
- Foydalanuvchi yuzi ma'lumotlar bazasiga va ilovalar ma'lumotlar bazasiga kirish (bu sobiqample).
- Hodisalarni qabul qiling va natijalarni UI HAL chiqishiga yuboring.
Sobiq uchun HALni amalga oshirish uchun asosiy ishlarampular:
- Mavjud shunga o'xshash HAL drayverini klonlash file va tegishli nomlarni o'zgartiring.
- Ilova ma'lumotlari operatsiyalari bilan bog'liq kodlarni olib tashlang.
- Har bir UI HAL chiqishidagi hodisalarni boshqarish uchun taʼriflar va funksiyalarni yangilangampdizayn.
- Vohani ishga tushirishda talab qilinadigan konfiguratsiyalarni qo'shing.
Batafsil qadamlar quyida keltirilgan:
- hal_vision_algo_oasis_coffeemachine.c klonlash. ni o'zgartiring filehal_vision_algo_oasis_guifacerec.c ga nom. Va barcha CoffeeMachine satrlarini GUIFaceRec bilan almashtiring file.
- Ilova maʼlumotlar bazasi bilan bogʻliq coffeedb (harf-kichik harflarga sezgir emas) qatorini oʻz ichiga olgan kodlarni olib tashlang, masalanample, #include hal_sln_coffeedb.h.
- UI HAL chiqishidagi hodisalarni boshqarish uchun HAL_VisionAlgoDev_OasisGUIFaceRec_InputNotify() funksiyasini o‘zgartiring.
- Ma'lumotlar bazasiga yangi yuz xususiyati ma'lumotlarini qo'shish uchun hodisa ta'rifini kEventFaceRecId_RegisterCoffeeSelection ni kEventFaceRecId_RegisterUserFace va regCoffeeSelection tuzilma qatorini regGUIFaceRec ga o'zgartiring.
- Sobiq yuzni aniqlash harakatlarining standart jarayonini ko'rsatish uchunample, kEventFaceRecID_OasisSetState holatida ishlov berishni holatlarning ta'riflari bilan o'zgartiring:
- kOASISLiteState
- Ro'yxatdan o'tish kOASISLiteState
- kOASISLiteState-ni tan olish
- To'xtatildi
- Yuqoridagi bosqichda aytib o'tilgan hodisalarning ta'riflarini qo'shing va o'zgartiring.
- Sarlavhani nusxalash file smart HMI\coffee_machine \cm7\source\event_handlers\ dan smart_tlhmi_event_descriptor.h eski papka manbasigaample SW. ni yangilang file quyidagi kabi:
- Enum turidagi kEventFaceRecId_RegisterCoffeeSelectionni kEventFaceRecId_RegisterUserFace ga _event_smart_tlhmi_id turiga va regCoffeeSelection tuzilma qatorini _event_smart_tlhmi strukturasidagi regGUIFaceRec ga o‘zgartiring. Shunday qilib, regCoffeeSelection uchun register_coffee_selection_event_t strukturasini register_gui_facerec_event_t ga o‘zgartiring.
- Qahva mashinasi ilovasi uchun ishlatiladigan boshqa kontentni o'chiring, masalanample, ovoz haqidagi kod qatori: #include “hal_event_descriptor_voice.h”.
- kOASISLiteState_Stopped va kOASISLiteState_Running turlarini hal_vision_algo.h ichidagi oasis_lite_state_t enum turiga quyidagi tarzda loyihada framework>hal>vision ostida qo‘shing:
typedef enum _oasis_lite_state {- kOASISLiteState
- Ishlayapti, kOASISLiteState
- Toʻxtatildi, kOASISLiteState
- Tan olish,
- kOASISLiteState
- Ro'yxatdan o'tish, kOASISLiteState
- Registratsiyani bekor qilish, kOASISLiteState
- RemoteRegistration, kOASISLiteState
- Hisoblash
- Loyihadagi framework>hal>vision ostida hal_event_descriptor_face_rec.h da oasis_state_event_t strukturasini quyidagi tarzda yaxshilash uchun yuqoridagi yangilangan oasis_lite_state_t strukturasidan foydalaning: typedef struct _oasis_state_event_t { oasis_lite_state_t; } oasis_state_event_t;
- Vizyon algo HAL dan voqealarni bir yadroda ishlaydigan boshqa HAL larga yuborish uchun barcha kEventInfo_Remote ni kEventInfo_Local ga o'zgartiring, chunki oldingi versiyada ikki yadroli o'rniga bitta yadro ishlatiladi.ample.
- OASISLT_init() da vohani ishga tushirish uchun quyidagi konfiguratsiyalarni qo'shing va o'zgartiring:
- board_define.h da video ramka uchun makro ta'riflar va xotira bo'limlarini qo'shing: #define OASIS_RGB_FRAME_WIDTH 800
- #OASIS_RGB_FRAME_HEIGHT 600 ni aniqlang
- #OASIS_RGB_FRAME_SRC_FORMATni belgilang kPixelFormat_YUV1P444_RGB
- #OASIS_RGB_FRAME_BYTE_PER_PIXEL 3 ni aniqlang
- #AT_FB_SHMEM_SECTION_ALIGN (var, alignbaytlar) ni aniqlang \
- __attribute__((bo'lim(“.bss.$fb_sh_mem,\”aw\",%nobits @”))) var
- __atribut__((hizalangan(alignbayt))))
- 5-rasmda ko'rsatilgan Loyiha > Xususiyatlar > C/C++ Build > MCU sozlamalarida yuqoridagi fb_sh_mem xotira bo'limiga xotira tayinlanishini sozlang:
- g_DTCOPBuf global oʻzgaruvchisini lvgl_gui_face_rec_cm7.cpp da eʼlon qiling: AT_NONCACHEABLE_SECTION_ALIGN_DTC (uint8_t g_DTCOPBuf[DTC_OPTIMIZE_BUFFER_SIZE], 4);
- Yuqoridagi o'zgaruvchida ishlatiladigan ta'riflarni qo'shishda davom eting:
- board_define.h da yuqoridagi qismni aniqlang:
- #define AT_NONCACHEABLE_SECTION_ALIGN_DTC(var, alignbytes) \
- atribut__((bo'lim(".bss.$SRAM_DTC_cm7,\"aw\",%nobits @"))) var
- atribut__((hizalangan(alignbaytlar)))
- Sarlavhani kiriting file hal_vision_algo.h lvgl_gui_face_rec_cm7.cpp ichiga kiritilgan app_config.h da DTC_OPTIMIZE_BUFFER_SIZE so'l ta'rifini o'z ichiga oladi.
- board_define.h da video ramka uchun makro ta'riflar va xotira bo'limlarini qo'shing: #define OASIS_RGB_FRAME_WIDTH 800
- Yuzni aniqlashda harakatlanish holatini ko'rsatish uchun s_debugOption o'zgaruvchisini true ga o'rnating.
- Sarlavhaning qidirish yo'lini qo'shing files of vision HAL on Project > Xususiyatlar >C/C++ Build > Settings > Tool Settings > MCU C compiler > Includes and MCU C++ compiler > O‘z ichiga oladi: “${workspace_loc:/${ProjName}/framework/hal/vision}”
- board_define.h da vision algo HALni yoqish uchun quyidagi taʼrifni qoʻshing: #define ENABLE_VISIONALGO_DEV_Oasis_GUIFaceRec
UI HAL chiqishini yoqish
Chiqish UI HAL ko'rish algo HALga voqealar haqida xabar beradi va HAL ko'rish algosidan olingan xulosalarga javob beradi. GUI ilovasi bilan hodisalar odatda ilova tomonidan ishga tushiriladi va natijalar ilovada ko'rsatiladi.
Uni yoqish uchun mavjud o'xshash HAL drayverini klonlang file bu erda odatda quyidagi funktsiyalar amalga oshiriladi:
- Yuzni aniqlash va ma'lumotlar bazasiga kirish uchun voqealar haqida xabar bering.
- Voqealarni boshlash uchun GUI ilovasi uchun qayta qo'ng'iroqlarni amalga oshiring.
- Vizyon algo modulidan olingan natijalarni boshqaring.
- Taymerlar va yuz yoʻriqnomasi toʻrtburchagi bilan boshqariladigan jarayon paneli orqali UIda hodisalarni qayta ishlash jarayoni va natijalarini koʻrsating.
Sobiq uchun HALni amalga oshirish uchun asosiy ishlarampUshbu hujjatda quyidagilar qo'llaniladi:
- Mavjud shunga o'xshash HAL drayverini klonlash file va tegishli nomlarni o'zgartiring.
- Ilovaga tegishli kodlarni olib tashlang.
- Hodisalar haqida bildirishnoma va natijalarga javob berish funksiyalarini yangilangampdizayn.
- Voqealarni boshlash uchun GUI ilovasi uchun qayta qo'ng'iroqlarni qo'shing.
Batafsil qadamlar quyida keltirilgan:
- hal_output_ui_coffee_machine.c klonlash. ni o'zgartiring filehal_ output_ui_guifacerec.c ga nom.
- CoffeeMachine barcha satrlarini GUIFaceRec bilan almashtiring file.
- Ilovaga tegishli kodlarni olib tashlang - qahva mashinasi.
- WakeUp() va _StandBy() funksiyalarini va tegishli kodlarni olib tashlang (ular uchun wake_up va kutish rejimida qidirish mumkin).
- Oldindan olib tashlangview HAL_OutputDev_UiGUIFaceRec_Input Notify() da tegishli kodlarni qayta ishlash rejimi hodisalari.
- UI_xxx_Callback() funksiyalarini va gui_ qatorini o‘z ichiga olgan kodlarni va qahva mashinasi GUI bilan bog‘liq ekranni olib tashlang, bundan oldin gui_set_virtual_face() bundan mustasno.view rejim xususiyati.
- Kofe mashinasi ilovasiga tegishli s_IsWaitingAnotherSelection va s_IsWaitingRegisterSelection oʻzgaruvchilari bilan bogʻliq barcha kodlarni olib tashlang.
- Ovoz, audio va til bilan bog'liq kodlarni olib tashlang. Misol uchunampga:
- #oʻz ichiga “hal_voice_algo_asr_local.h”,
- #"hal_event_descriptor_voice.h" ni kiriting
- Har xil hodisalar haqida bildirishnomalar uchun _OutputManagerNotify(), _SetFaceRec(), _RegisterGUIFaceRec() va DeregisterGUIFaceRec() funksiyalarini _StopFaceRec(), _RegisterCoffeeSelection() va DeregisterCoffeeSelelet() oʻchirishdan oldin amalga oshiring.
- _OutputManagerNotify() hodisani ko'rish algo HAL ga yuborish uchun asosiy hodisani chiqarish funktsiyasini amalga oshiradi. Quyidagi funktsiyalar uni o'z voqealarini yuborish uchun chaqiradi.
- _SetFaceRec() kEventFaceRecID_OasisSetState hodisasini yuzni roʻyxatga olish, tanib olish va algoni toʻxtatish uchun koʻrish algosini ishga tushirish uchun yuboradi.
- _RegisterGUIFaceRec() ro'yxatdan o'tish OK paytida ma'lumotlar bazasiga yuz xususiyati ma'lumotlarini qo'shish uchun smart_tlhmi_event_descriptor.h da belgilangan kEventFaceRecId_RegisterGUIFaceRec hodisasini yuboradi.
- DeregisterGUIFaceRec() yuzni tanishdan o'tganda ma'lumotlar bazasidan yuz xususiyati ma'lumotlarini o'chirish uchun kEventFaceRecID_DelUser hodisasini yuboradi.
- Tegishli amallarni bajarish uchun kodlarni yangilang, shu jumladan _InferComplete_Vision() funksiyasida yuzni roʻyxatga olish va tanib olish natijalari uchun LVGL GUI ilovasidan API’larga qoʻngʻiroq qilib GUIni yangilang.ampning dizayni. Misol uchunample, yuzni ro'yxatdan o'tkazish muvaffaqiyatli bo'lganda,
- _FaceRecProcess_Stop() ga qo'ng'iroq qilish orqali taraqqiyotni ko'rsatishni to'xtating
- _SetFaceRec(kOASISLiteState_Stopped) ga qo'ng'iroq qilish orqali yuzni ro'yxatga olishni to'xtating;
- GUIda muvaffaqiyatli natijani ko'rsatish: gui_show_face_rec_result(kFaceRecResult_OK, s_UserId);
- Yuz ma'lumotlarini ma'lumotlar bazasiga ro'yxatdan o'tkazing: _RegisterUserFace(s_UserId);
- Voqealarni boshqarish uchun UI qayta qo'ng'iroq funksiyalarini qo'shing: preview, GUIdan ishga tushirilgan foydalanuvchi yuzini ro'yxatdan o'tkazish, tanib olish va o'chirish. Misol uchunample, yuz registratsiyasini qayta qo'ng'iroq qilish: bekor UI_Registration_Callback(){ _SetFaceRec(kOASISLiteState_Registration); _FaceRecProcess_Start(); }
- Va turli hodisalar va natijalardagi taraqqiyot va holatni ko'rsatish uchun _FaceRecProcess_Start() va _FaceRecProcess_Stop() funksiyalarini qo'shing.
- Taymerning ISR qayta qo'ng'iroq qilish funksiyasini yangilang _SessionTimer_Callback() Taym-aut holatini qo'ng'iroq qilish orqali: gui_show_face_rec_result(kFaceRecResult_TimeOut, s_UserId);
- board_define.h da HAL UI chiqishini yoqish uchun quyidagi taʼriflarni qoʻshing: #define ENABLE_OUTPUT_DEV_UiGUIFaceRec
Eslatma:
Yuzni tanib olish funksiyasini yaxshiroq taqdim etish uchun UI HAL chiqishida yuzni tanish jarayoni va natijalarini ko‘rsatish funksiyasini saqlang. Funktsiya quyida tavsiflangan
- Yuz yoʻriqnomasi toʻrtburchagi koʻk rangni koʻrsatadi, jarayon satri esa yuzni roʻyxatga olish yoki tanishni boshlash jarayonini koʻrsatadi.
- Yuzni roʻyxatdan oʻtkazish muvaffaqiyatli boʻlsa, yuz yoʻriqnomasi toʻrtburchagi qizil rangni koʻrsatadi.
- Yuzni aniqlash muvaffaqiyatli bo'lsa, yuz yo'riqnomasi to'rtburchak yashil rangni ko'rsatadi.
- Taymerning amal qilish muddati tugagandan so'ng muvaffaqiyatsizlikka uchraganda, yuz yo'riqnomasi to'rtburchaklar ko'k bo'lib qoladi va harakatlanish paneli to'liq jarayonni ko'rsatadi. O'sha paytda yuzni ro'yxatdan o'tkazish yoki tanib olishni to'xtating.
Rivojlanish paneli va yuz yo'riqnomasi to'rtburchaklar ikkilik manbaga o'rnatilgan piktogramma sifatida taqdim etiladi file Flash-ga dasturlash uchun. SDRAMdagi piktogramma ma'lumotlariga ko'rsatgichlar UI HAL chiqishida UI HAL qurilmasini ishga tushirishda chaqirilgan LoadIcons(APP_ICONS_BASE) funksiyasida o'rnatiladi. Funktsiya uchun piktogramma yordamini amalga oshirishi kerak.
Belgilarni qo'llab-quvvatlashni amalga oshiring
- LVGL GUI ilovasida ishlatiladigan tasvirlar bilan piktogrammalarni birlashtirgan resurs yarating:
- To'rtta belgi sarlavhasini klonlash filesmart HMI dan process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h va virtual_face_red_420x426.h
\ kofe mashinasi \ resurs \ piktogramma \ eski papkasi ostidagi yangi papka piktogrammalarigaample SW. - To'rtta belgi uchun qidiruv yo'lini qo'shing files camera_preview_resource.txt file resurs papkasida, masalanample: icon ../resource/icons/process_bar_240x14.h
- camera_pre-ni bajaringview_resource_build.bat axlat qutisini yaratish uchun tasvir va piktogramma resurslarini yaratish uchun file camera_preview_resource.bin va ma'lumotlar file resource_information_table.txt (6-rasmga qarang).
- To'rtta belgi sarlavhasini klonlash filesmart HMI dan process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h va virtual_face_red_420x426.h
- SDRAM-dagi boshlang'ich manzilni va app_config.h-dagi piktogramma hajmini aniqlang. Manzil GUI ilovasi tasvirlari yonida boshlanadi. Hajmi ma'lumotlarda yaratilgan file. #APP_ICONS_BASE ni aniqlang (APP_RES_SHMEM_BASE + APP_LVGL_IMGS_SIZE) #APP_ICONS_SIZE ni 0x107c40 aniqlang
- res_sh_mem nomli xotira boʻlimining belgilangan hajmini app_config.h da qayta belgilash orqali 0x200000 ga yangilang: #define RES_SHMEM_TOTAL_SIZE 0x200000 va tegishli sozlamani Project > Properties > C/C++ Build > MCU sozlamalarida oʻrnating.
- Asosiy funksiyadagi APP_LoadResource() funksiyasida Flash-dan SDRAM-ga yuklangan resursning umumiy hajmiga belgi o‘lchamini qo‘shing. file lvgl_gui_face_rec_cm7.cpp: memcpy((void *)APP_LVGL_IMGS_BASE, pLvglImages, APP_LVGL_IMGS_SIZE + APP_ICONS_SIZE);
Eslatma: Yuzni tanish funksiyasini bajarish uchun LVGL GUI ilovasini qoʻllab-quvvatlash kerak. UI HAL chiqishidagi UI qayta qoʻngʻiroq funksiyalari UI ekranidagi hodisalarni boshqarish uchun LVGL GUI ilovasi tomonidan chaqiriladi. Boshqa tomondan, UI HAL chiqishi natija va holatni ko'rsatish uchun UIni yangilash uchun LVGL GUI ilovasidan APIlarni chaqiradi. LVGL GUI ilovasini ishlab chiqish nisbatan mustaqil va 4.3-bo'limda keltirilgan.
4.1.5 Yuzni tanish uchun HAL qurilmalari va boshqaruvchilarini ishga tushiring
Yoqilgan ko'rish algosi HAL va UI chiqishi HAL va ularning menejerlari asosan ishga tushiriladi file
lvgl_gui_face_rec_cm7.cpp quyidagi kabi ramkada ishlab chiqish konvertatsiyalari:
- Sarlavhani kiriting file kod qatorini qo'shish orqali ikkita HAL menejeri bilan bog'liq:
- #include ” fwk_output_manager.h “
- # "fwk_vision_algo_manager.h" ni o'z ichiga oladi
- HAL qurilmalarini e'lon qiling:
- HAL_VALGO_DEV_DECLARE(OasisGUIFaceRec);
- HAL_OUTPUT_DEV_DECLARE(UiGUIFaceRec);
- HAL qurilmalarini ro'yxatdan o'tkazing:
- HAL_VALGO_DEV_REGISTER(OasisGUIFaceRec, ret);
- HAL_OUTPUT_DEV_REGISTER(UiGUIFaceRec, ret);
- Menejerlarni ishga tushiring:
- FWK_MANAGER_INIT(VisionAlgoManager, ret);
- FWK_MANAGER_INIT(OutputManager, ret);
- Menejerlarni ishga tushiring:
- FWK_MANAGER_START(VisionAlgoManager, VISION_ALGO_MANAGER_TASK_PRIORITY, qayta);
- FWK_MANAGER_START(OutputManager, OUTPUT_MANAGER_TASK_PRIORITY, qayta);
- Menejer vazifalarining ustuvorligini aniqlang:
- #VISION_ALGO_MANAGER_VAZIFA_PRIVORITY ni aniqlang
- #CHILISHI_BOSHQARUVCHI_VAZIFA_PRIVORITY ni belgilang
Frameworkda yuz ma'lumotlar bazasini qo'llab-quvvatlashni qo'shing
Roʻyxatdan oʻtgan yuz funksiyasi maʼlumotlariga Flash-da saqlangan yuz maʼlumotlar bazasiga bir oz orqali kirish mumkin file tizimi. Yuz ma'lumotlar bazasini qo'llab-quvvatlashni qo'shish bosqichlari quyida tasvirlangan.
Flash xotira uchun drayverlarni qo'shing
Flash interfeysi FlexSPI drayverini nusxalash files fsl_flexspi.c va fsl_flexspi.h va ma'lumotlarni shifrlash drayveri files fsl_caam.c va fsl_caam.h SDK_2_13_0_MIMXRT1170-EVK\devices \MIMRX1176\drivers\ yo'lidan sobiq drayverlar jildigaample SW.
Kengash darajasidagi yordamni qo'shing
- board.h dagi Flash qurilmasi uchun ishlatiladigan FlexSPI ta'riflarini qo'shing:
- #BOARD_FLEXSPI FLEXSPI1 ni aniqlang
- #BOARD_FLEXSPI_CLOCK kCLOCK_FlexSpi1 ni aniqlang
- #BOARD_FLEXSPI_AMBA_BASE FlexSPI1_AMBA_BASE ni aniqlang
- Operatorlar va konfiguratsiyalarni nusxalash fileflexspi_nor_flash_ops.c, flexspi_nor_flash_ops.h, sln_flash_config.c, sln_flash_config_w25q256jvs.h va sln_flash_ops.h fayllarini pathee_nor_flash_ops.c papkasi ostidagi sln_flash_ops.h-ni thepatheeconfig.cm_\\ sobiqample SW.
- Sichqonchaning o'ng tugmachasini bosgandan so'ng C/C++ Build > Sozlamalarda "Resursni qurishdan chiqarib tashlash" belgisini olib tashlang. files nomini kiriting va ularni loyihaga o'rnatishga imkon berish uchun Xususiyatlar ni oching.
- Kiritilgan sarlavhani o'zgartiring filesln_flash_config.c va flexspi_nor_flash_ops.h da sln_flash_config_w25q256jvs.h ga sln_flash_config.h nomini bering.
- FlexSPI1 soat manbasini o'rnating file clock_config.c qahva mashinasi ilovasiga ishora qiladi.
Adapter va o'rta darajadagi yordamni qo'shing
- ni nusxalash filesln_flash.c, sln_flash.h, sln_encrypt.c va sln_encrypt.h adapter drayverlari sifatida file tizim va ilovani smart HMI\coffee_machine\cm7\source\ yo'lidan sobiq papka manbasiga o'tkazing.ample. Yangisini yangilang files:
- Qurilish uchun ulardagi "Resursni qurishdan chiqarib tashlash" belgisini olib tashlang.
- Barcha kiritilgan sarlavhani o'zgartiring file sln_flash_config.h nomini sln_flash_config_w25q256jvs.h deb belgilang.
- Jilddan nusxa oling filekichiklar uchun API-larni o'z ichiga olgan tizim filetizimi va HAL drayveri aqlli HMI \coffee_machine\cm7\source\ dan sobiqample SW. Va yangi jild uchun yangilash:
- Qurilish uchun undagi "Resursni qurishdan chiqarib tashlash" belgisini olib tashlang.
- Loyiha sozlamalarida uning kiritish yoʻlini qoʻshing: “${workspace_loc:/${ProjName}/filetizimi}”
- Kiritilgan sarlavhani o'zgartiring file sln_flash_config.h nomini sln_flash_config_w25q256jvs.h va fica_definition.h deb app_config.h deb nomlang. file sln_flash_littlefs.h.
- O'rta idishni o'z ichiga olgan littlefs papkasidan nusxa oling - oz filetizim SDK_2_13_0_ MIMXRT1170-EVK\middleware\ yo'lidan oldingi versiyagaample SW. Va yangi jildni yangilang:
- Qurilish uchun undagi "Resursni qurishdan chiqarib tashlash" belgisini olib tashlang.
- Loyiha sozlamalarida uning kiritish yoʻlini qoʻshing: “${workspace_loc:/${ProjName}/littlefs}”
HAL drayverlarini qo'shing
- Ikkita HAL qurilmasi mavjud - file tizim va yuz ma'lumotlar bazasi HAL ma'lumotlar bazasiga kirish xususiyati uchun qo'llab-quvvatlanadi va ular allaqachon hech qanday o'zgarishsiz ramkada amalga oshirilgan. board_define.h da quyidagi ta'riflarni qo'shish orqali ularni yoqing:
- #ENABLE_FLASH_DEV_Littlefs ni aniqlang
- #ENABLE_FACEDB ni aniqlang
Va sobiq uchun yuz ma'lumotlar bazasi nomini o'zgartiringample: #define OASIS_FACE_DB_DIR “oasis_gui_face_rec”
Ilova darajasida yordam qo'shing
- Asosiyni yangilang file lvgl_gui_face_rec_cm7.cpp:
- Sarlavhani kiriting file Flash bilan bog'liq file kod qatorini qo'shish orqali tizim HAL menejeri: #include “fwk_flash.h”
- E'lon qiling va ro'yxatdan o'ting file tizim HAL qurilmasi:
- HAL_FLASH_DEV_DECLARE(Kichiklar);
- HAL_FLASH_DEV_REGISTER(Littlefs, ret);
Eslatma: The file APP_InitFramework() funksiyasida barcha qurilma boshqaruvchilari ishga tushirilgunga qadar tizim HAL qurilmasi roʻyxatdan oʻtgan boʻlishi kerak.
- MPUni sozlash uchun APP_BoardInit() da BOARD_ConfigMPU() funksiyasini chaqiring.
- ni o'rnating file Flash-da tizim tayinlash file app_config.h ilovasida ishlatiladigan so'l ta'riflarni belgilash orqali file sln_flash_littlefs.h:
- #FICA_IMG_ ni aniqlangFILE_SYS_ADDR (FLASH_IMG_SIZE + RES_SHMEM_TOTAL_SIZE)
- #FICA_ ni aniqlangFILE_SYS_SIZE (0x280000)
Konfiguratsiyalar
Ba'zi Flash bilan bog'liq kodlar etarli ishlash uchun SRAM ITC hududida bajariladi. Bog'lovchi konfiguratsiyalarini o'z ichiga olgan papkaning linkskriptlarini smart HMI\coffee_machine\cm7\ yo'lidan oldingisiga nusxalashample SW.
LVGL GUI ilovasini amalga oshiring
Ramka asosida LVGL GUI ilovasini ishlab chiqish UI HAL chiqishidan APIlarni chaqiradi va UI HAL chiqishi uchun APIlarni taqdim etadi (UI HAL chiqishini amalga oshirish uchun 4.1.3 bo'limiga qarang).
Biroq, LVGL GUI ilovasining batafsil bajarilishi dasturning talablari va dizayniga bog'liq. Bu avvalgi GUI ilovasiample 4-bo'limning boshida tasvirlanganidek ishlab chiqilgan.
Quyida amalga oshirish bo'yicha taqdimotlar keltirilgan:
- Moslashtirilgan kodlar GUI Guider loyihasi va oʻrnatilgan tizim loyihasi oʻrtasidagi interfeys sifatida GUI Guider tomonidan berilgan custom.c va custom.h da amalga oshiriladi.
- Quyidagi funktsiyalarga erishish uchun custom.c da gui_xxx() nomli yangi funksiyalarni qo'shing:
- UI-ni yangilash uchun UI HAL va GUI ilovasini chiqarish uchun.
- GUI ilovasi uchun UI HAL chiqishidan UI qayta qo'ng'iroq funksiyalarini chaqirish orqali hodisalarni ishga tushirish.
Misol uchunample, yangi funksiya gui_event_face_rec_action() tegishli tugma bosilganda GUI ilovasidan ishga tushirilgan yuzni roʻyxatga olish, yuzni tanish va foydalanuvchini oʻchirish hodisalaridan birini boshqarish uchun UI qayta qoʻngʻiroq funksiyalarini chaqiradi.
Eslatma: gui_set_virtual_face() funksiyasi UI HAL chiqishida oldindan chaqirilganview rejim custom.c da amalga oshirilishi kerak:
- Smart HMI\coffee_machine\cm4\custom \custom.c dan gui_set_virtual_face() funksiyasini klonlash.
- Vidjet nomini home_img_cameraPre o‘zgartiringview screen_img_camera_pre uchunview funksiyada.
- GUI Guider loyihasi bilan mos kelishi uchun custom.c saytidagi #ifndef RT_PLATFORM so‘l ta’rifi nazorati ostida UI HAL chiqishidagi barchaga bir xil prototip bilan UI qayta qo‘ng‘iroq qilish funksiyalarini amalga oshiring, chunki UI HAL chiqishidagi bu funksiyalar o'rnatilgan platforma. custom.c da ular GUI yo'riqchisidagi simulyatorga bog'liq va o'rnatilgan platformadan mustaqil. Misol uchunample, ishlayotgan GUI Guider simulyatori uchun yuzni ro'yxatga olishni qayta qo'ng'iroq qilish quyidagi tarzda amalga oshiriladi: #ifndef RT_PLATFORM void UI_Registration_Callback() { gui_hide_del_user_btn(true); s_InAction = noto'g'ri; qaytish; }
Eslatma: 6-bo'limning 4.1.3-bosqichida kiritilgan funksiyaning bir xil prototipiga qarang
RT_PLATFORM makro ta'rifi 7-rasmda ko'rsatilganidek, MCUXpresso loyiha sozlamalarida o'rnatiladi: - UI_xxx_Callback() va gui_xxx() nomli barcha funksiyalarni custom.h da e'lon qiling va GUI API'larini UI chiqishi HALga ulashish uchun smart_tlhmi_event_descriptor.h ichiga kiritilgan custom.h ni qo'shing.
- Quyidagi funktsiyalarga erishish uchun custom.c da gui_xxx() nomli yangi funksiyalarni qo'shing:
- GUI Guider-da GUI-ni ishlab chiqing:
- Oldindan papka kamerasini klonlashview lvgl_gui_camera_pre asosiy dasturiy paketidagi gui_guider papkasida GUI Guider loyiha dasturini oʻz ichiga oladiview_cm7. Tegishli nomni o'zgartiring camera_preview yangi sobiq uchun face_rec uchunample.
- Yuqoridagi yangilangan custom.c va custom-dan nusxa oling. h yangi GUI Guider loyihasi dasturiga.
- GUI Guider-da yangi face_rec loyihasini oching. Quyidagi kabi yangilang:
- Foydalanuvchini o'chirish deb nomlangan yangi tugmani qo'shing. GUI ilovasi ishga tushganda tugma yashirin bo'lishi uchun unga Hidden bayrog'ini qo'shing.
- Yuzni roʻyxatga olish, yuzni tanib olish va foydalanuvchini oʻchirish hodisalarini ishga tushirish uchun barcha roʻyxatdan oʻtish, tanib olish va foydalanuvchini oʻchirish tugmalarining Voqealar sozlamalarida “Chiqarilgan” triggeriga turli hodisa identifikatori parametri bilan API gui_event_face_rec_action() qoʻngʻiroq qilish uchun kod qatorini qoʻshing. 8-rasmda Ro'yxatdan o'tish tugmasi hodisasi uchun kod ko'rsatilgan:
- Yaratilgan kodni GUI Guider-dan MCUXpresso loyihasiga yangilang.
- MCUXpresso loyihasi SW papkasidagi papka tasvirlaridan tashqari tarkibni GUI Guider loyihasi SW tomonidan yaratilgan papkadagi mos keladiganlari bilan almashtiring.
Eslatma: Yuqorida kiritilgan o'zgartirishlar haqida ko'proq ma'lumot olish uchun exampda dasturiy ta'minot https://mcuxpresso.nxp.com/appcodehub.
Sobiq bilan tekshirishample loyiha
Sobiqni olish uchunampUshbu ilova uchun manbalar va vositalarni o'z ichiga olgan dasturiy ta'minot to'plamiga tashrif buyuring: https://mcuxpresso.nxp.com/appcodehub. Sobiqni ochingampMCUXpresso IDE ustidagi loyiha. .axf ni yaratish va dasturlash file 0x30000000 manziliga va resurs qutisini dasturlang file camera_preview_resource.bin manziliga 0x30800000.
LVGL GUI yuzni aniqlash, masalanample odatda quyidagi tarzda ishlaydi:
- Oldindanview: Quvvat yoqilganda, kamera tomonidan olingan video oqimlari kameraning oldingi ma'lum bir qismida ko'rsatiladiview GUI ekranida. Holat yorlig‘ida “Preview...”. Tafsilotlar uchun 3-rasmga qarang. Foydalanuvchini o'chirish tugmasi yashirin. Tugmalar va tasvirlar tashqarisidagi maydonni bosganda, u oldingisini ko'rsatadiview yuzni roʻyxatdan oʻtkazish yoki tanib olish amali tugagandan soʻng yuqoridagidek koʻrsating.
- Roʻyxatdan oʻtish:
- tortishish: Registratsiya tugmasi bosilganda yuzni roʻyxatga olish boshlanadi. Holat yorlig‘i “Ro‘yxatdan o‘tish…” ko‘rinishiga o‘zgaradi, yuz yo‘riqnomasi to‘rtburchagi ko‘k rangga ega bo‘ladi va taraqqiyot paneli jarayonni ko‘rsata boshlaydi. Roʻyxatdan oʻtish uchun foydalanuvchining yuzi koʻk yuz yoʻriqnomasi toʻrtburchakda koʻrsatilishiga ishonch hosil qiling.
- muvaffaqiyat: Holat yorlig‘ida “Ro‘yxatdan o‘tish…OK” va ro‘yxatdan o‘tgan foydalanuvchi identifikatori raqami ko‘rsatiladi, agar yuzni ro‘yxatdan o‘tkazish jarayoni muvaffaqiyatli bo‘lsa, barda to‘liq ko‘rsatilgunga qadar yuz yo‘riqnomasi to‘rtburchak qizil rangga aylanadi.
- Muvaffaqiyatsizlik -> Vaqt tugashi: Holat yorlig'ida "Ro'yxatdan o'tish ... Vaqt tugashi" ko'rsatiladi, agar jarayon barda to'liq ko'rsatilganda yuzni ro'yxatdan o'tkazish hali ham muvaffaqiyatsiz bo'lsa.
- Muvaffaqiyatsizlik -> Ko'paytirish: holat yorlig'ida "Ro'yxatdan o'tish... Muvaffaqiyatsiz" ko'rsatiladi, agar ro'yxatdan o'tgan yuz barda to'liq ko'rsatilishidan oldin tan olinsa, yuz yo'riqnomasi to'rtburchak yashil rangga aylanadi.
- bilish:
- Ishga tushirish: Tanish tugmasi bosilganda, yuzni tanish boshlanadi. Vaziyat yorlig'i "Tanish..." ko'rinishiga o'zgaradi, yuz yo'riqnomasi to'rtburchaklar ko'k rangda ko'rinadi va taraqqiyot paneli jarayonni ko'rsata boshlaydi. Roʻyxatdan oʻtish uchun foydalanuvchining yuzi koʻk yuz yoʻriqnomasi toʻrtburchakda koʻrsatilganligiga ishonch hosil qiling.
- muvaffaqiyat: Holat yorlig‘ida “Tanish…OK” va tan olingan foydalanuvchi identifikatori raqami ko‘rsatiladi, agar yuzni tanib olish jarayoni barda to‘liq ko‘rsatilishidan oldin muvaffaqiyatli bo‘lsa, yuz yo‘riqnomasi to‘rtburchak yashil rangga aylanadi. Shu nuqtada foydalanuvchini o'chirish tugmasi paydo bo'ladi. Bu shuni anglatadiki, foydalanuvchi faqat tanilganida uni o'chirishga ruxsat beriladi.
- ahvol: Holat yorlig'ida "Tanish... Vaqt tugashi" ko'rsatiladi, agar jarayon barda to'liq ko'rsatilganda yuzni tanib olish hali ham muvaffaqiyatsiz bo'lsa.
- Foydalanuvchini oʻchirish: “Foydalanuvchini oʻchirish” tugmasi bosilganda, yuzni tanish muvaffaqiyatli boʻlgandan soʻng, holat yorligʻi “Foydalanuvchini oʻchirish…OK” koʻrinishiga oʻzgaradi, bunda yuz yoʻriqnomasi toʻrtburchaklar koʻk rangga aylanadi va barda toʻliq koʻrsatiladi. Foydalanuvchini o'chirish tugmasi yana yashiringan. Tan olingan yuz/foydalanuvchi maʼlumotlar bazasidan oʻchiriladi. Bu yuzni/foydalanuvchini qayta roʻyxatdan oʻtkazmaguncha tanib boʻlmaydi.
Hujjatdagi manba kodi haqida eslatma
ExampUshbu hujjatda ko'rsatilgan kod quyidagi mualliflik huquqi va BSD-3-band litsenziyasiga ega:
Mualliflik huquqi 2024 NXP Qayta taqsimlash va manba va ikkilik shakllarda o'zgartirishlarsiz yoki o'zgartirishlarsiz foydalanishga quyidagi shartlar bajarilgan taqdirda ruxsat beriladi:
- Manba kodini qayta tarqatishda yuqoridagi mualliflik huquqiga oid eslatma, ushbu shartlar roʻyxati va quyidagi rad javobi boʻlishi kerak.
- Ikkilik shakldagi qayta tarqatishlar yuqoridagi mualliflik huquqi to'g'risidagi eslatmani takrorlashi kerak, ushbu shartlar ro'yxati va hujjatlardagi va/yoki boshqa materiallardagi quyidagi rad etish tarqatish bilan birga taqdim etilishi kerak.
- Mualliflik huquqi egasining nomi ham, uning ishtirokchilarining ismlari ham ushbu dasturiy ta'minotdan olingan mahsulotlarni ma'qullash yoki rag'batlantirish uchun maxsus yozma ruxsatisiz foydalanilishi mumkin emas.
USHBU DASTURIY HUQUQ SOG'ILGANLARI VA HISSA QO'SHILGANLAR TOMONIDAN "XAMDA" TAQDIM ETILGAN VA HAR QANDAY OQISH YOKI KO'RSATILGAN KAFOLATLAR, JUMLADAN, lekin ular bilan cheklanmagan holda, sotuvchining tovar-xo'jalik mulki bo'yicha bilvosita KAFOLATLARI. RAD ETILGAN. HECH HOLDA MULLIK HUQUQ SOG'I YOKI HISSA QO'SHILGANLAR HAR qanday to'g'ridan-to'g'ri, bilvosita, tasodifiy, maxsus, namunaviy yoki oqibatda bo'lgan zararlar uchun (Jumladan, lekin CHEK EMAS, TO'G'RISIYOT BO'LGAN) JAVBOR BO'LADI. XIZMATLAR FOYDALANISH, MA'LUMOT YOKI FOYDALANISHNI YO'G'OTISH YOKI BO'LGAN BO'LGAN VA SHARTNOMADA BO'LGAN HAR QANDAY MAS'ABRLIK NAZARIYASI BO'YICHA USHBU DASTURIY DASTURDAN FOYDALANISH TAQIDA, BUNDAY ZARAR BERISH MUMKINLIGI HAQIDA MASLAHAT BERILGAN BO'LSA.
Qayta ko'rib chiqish tarixi
Yuridik ma'lumotlar
Ta'riflar
Qoralama — Hujjatdagi qoralama maqomi kontent hali ham ichki qayta ostida ekanligini bildiradiview va o'zgartirishlar yoki qo'shimchalar kiritilishi mumkin bo'lgan rasmiy tasdiqlanishi kerak. NXP Semiconductors hujjatning qoralama versiyasiga kiritilgan ma'lumotlarning to'g'riligi yoki to'liqligi bo'yicha hech qanday bayonot yoki kafolat bermaydi va bunday ma'lumotlardan foydalanish oqibatlari uchun javobgar bo'lmaydi.
Rad etish
- Cheklangan kafolat va javobgarlik — Ushbu hujjatdagi maʼlumotlar aniq va ishonchli deb hisoblanadi. Biroq, NXP Semiconductors bunday ma'lumotlarning to'g'riligi yoki to'liqligi bo'yicha aniq yoki nazarda tutilgan hech qanday bayonot yoki kafolat bermaydi va bunday ma'lumotlardan foydalanish oqibatlari uchun javobgar bo'lmaydi. NXP Semiconductors, agar NXP Semiconductors tashqarisidagi axborot manbai tomonidan taqdim etilgan bo'lsa, ushbu hujjatdagi kontent uchun javobgarlikni o'z zimmasiga olmaydi.
Hech qanday holatda NXP Semiconductors har qanday bilvosita, tasodifiy, jazo, maxsus yoki oqibatli zararlar uchun javobgar bo'lmaydi (shu jumladan cheklanmagan foyda, yo'qolgan jamg'armalar, biznesning uzilishi, har qanday mahsulotni olib tashlash yoki almashtirish bilan bog'liq xarajatlar yoki qayta ishlash to'lovlari) yoki bunday zararlar huquqbuzarlik (shu jumladan, beparvolik), kafolat, shartnomani buzish yoki boshqa huquqiy nazariyaga asoslanmagan.
Mijoz har qanday sababga ko'ra etkazilishi mumkin bo'lgan har qanday zarardan qat'i nazar, NXP Semiconductors kompaniyasining bu erda tavsiflangan mahsulotlar uchun mijoz oldidagi jami va jami javobgarligi NXP Semiconductors'ni tijoriy sotish qoidalari va shartlariga muvofiq cheklanadi. - O'zgartirish kiritish huquqi — NXP Semiconductors ushbu hujjatda chop etilgan maʼlumotlarga, jumladan, hech qanday cheklovsiz texnik xususiyatlar va mahsulot tavsiflariga istalgan vaqtda va ogohlantirmasdan oʻzgartirish kiritish huquqini oʻzida saqlab qoladi. Ushbu hujjat nashr etilishidan oldin taqdim etilgan barcha ma'lumotlarning o'rnini bosadi va almashtiradi.
- Foydalanish uchun yaroqlilik — NXP Semiconductors mahsulotlari hayotni qo'llab-quvvatlash, hayot uchun muhim yoki xavfsizlik uchun muhim tizimlar yoki uskunalarda, shuningdek NXP Semiconductors mahsulotining ishdan chiqishi yoki noto'g'ri ishlashi sabab bo'lishi mumkin bo'lgan ilovalarda foydalanish uchun mo'ljallangan, ruxsat berilmagan yoki kafolatlanmagan. shaxsiy shikastlanish, o'lim yoki jiddiy mulk yoki atrof-muhitga zarar etkazish. NXP Semiconductors va uning yetkazib beruvchilari NXP Semiconductors mahsulotlarini bunday uskuna yoki ilovalarga kiritish va/yoki ishlatish uchun hech qanday javobgarlikni o'z zimmalariga olmaydilar va shuning uchun bunday qo'shilish va/yoki foydalanish mijozning o'ziga yuklanadi.
- Ilovalar — Ushbu mahsulotlarning har biri uchun bu erda tasvirlangan ilovalar faqat tasvirlash uchun mo'ljallangan. NXP Semiconductors bunday ilovalar qo'shimcha sinovlar yoki o'zgartirishlarsiz belgilangan foydalanish uchun mos bo'lishiga hech qanday vakillik yoki kafolat bermaydi.
Mijozlar NXP Semiconductors mahsulotlaridan foydalangan holda o'z ilovalari va mahsulotlarini loyihalash va ishlatish uchun javobgardirlar va NXP Semiconductors ilovalar yoki mijozlar mahsuloti dizayni bilan bog'liq har qanday yordam uchun javobgarlikni o'z zimmalariga olmaydilar. NXP Semiconductors mahsuloti mijozning ilovalari va rejalashtirilgan mahsulotlariga, shuningdek, mijozning uchinchi tomon mijoz(lar)ining rejalashtirilgan qo'llanilishi va foydalanishi uchun mos yoki mos kelishini aniqlash faqat mijozning javobgarligidir. Mijozlar o'zlarining ilovalari va mahsulotlari bilan bog'liq xavflarni minimallashtirish uchun tegishli dizayn va operatsion xavfsizlik choralarini taqdim etishlari kerak. NXP Semiconductors mijozning ilovalari yoki mahsulotlaridagi har qanday zaiflik yoki defolt yoki mijozning uchinchi tomon mijoz(lar)i tomonidan qo'llanilishi yoki foydalanishiga asoslangan har qanday sukut, zarar, xarajatlar yoki muammo bilan bog'liq hech qanday javobgarlikni o'z zimmasiga olmaydi. Buyurtmachi NXP Semiconductors mahsulotlaridan foydalangan holda mijozning ilovalari va mahsulotlari uchun barcha zarur sinovlarni o'tkazish uchun, ilovalar va mahsulotlar yoki dasturning sukut bo'yicha yoki mijozning uchinchi tomon mijozlari (mijozlari) tomonidan foydalanishning oldini olish uchun javobgardir. NXP bu borada hech qanday javobgarlikni o'z zimmasiga olmaydi. - Tijorat savdosining shartlari va shartlari — NXP Semiconductors mahsulotlari https://www.nxp.com/pro saytida e'lon qilingan tijorat savdosining umumiy shartlari va shartlariga muvofiq sotiladi.file/shartlar, agar amaldagi yozma shaxsiy shartnomada boshqacha qoida nazarda tutilmagan bo'lsa. Yakka tartibdagi shartnoma tuzilgan taqdirda, faqat tegishli shartnomaning shartlari qo'llaniladi. NXP Semiconductors mijoz tomonidan NXP Semiconductors mahsulotlarini sotib olish bo'yicha mijozning umumiy shartlarini qo'llashga ochiqchasiga e'tiroz bildiradi.
- Eksport nazorati — Ushbu hujjat, shuningdek, bu yerda tasvirlangan band(lar) eksport nazorati qoidalariga bo‘ysunishi mumkin. Eksport qilish vakolatli organlarning oldindan ruxsatini talab qilishi mumkin.
- Avtomatik bo'lmagan malakali mahsulotlarda foydalanish uchun yaroqlilik — Agar ushbu hujjatda ushbu maxsus NXP Semiconductors mahsuloti avtomobil uchun malakali ekanligi aniq ko'rsatilmagan bo'lsa, mahsulot avtomobilda foydalanish uchun mos emas. U avtomobil sinovlari yoki dastur talablariga muvofiq malakali yoki sinovdan o'tkazilmagan. NXP Semiconductors avtomobil uskunalari yoki ilovalariga avtomobil bo'lmagan malakali mahsulotlarni kiritish va/yoki foydalanish uchun javobgarlikni o'z zimmasiga olmaydi.
Agar mijoz mahsulotni avtomobil texnik xususiyatlari va standartlariga muvofiq avtomobil dasturlarida loyihalash va ishlatish uchun ishlatsa, mijoz (a) mahsulotdan NXP Semiconductors kompaniyasining bunday avtomobil ilovalari, foydalanish va texnik xususiyatlari uchun kafolatisiz foydalanishi kerak va ( b) mijoz mahsulotni NXP Semiconductors spetsifikatsiyalaridan tashqari avtomobil ilovalari uchun ishlatganda, undan foydalanish faqat mijozning o'ziga yuklanadi va (c) mijoz NXP Semiconductors kompaniyasini mijozning dizayni va undan foydalanishi natijasida kelib chiqqan har qanday javobgarlik, zarar yoki muvaffaqiyatsiz mahsulot da'volari uchun to'liq qoplaydi. NXP Semiconductors standart kafolati va NXP Semiconductors mahsulot spetsifikatsiyalaridan tashqari avtomobil ilovalari uchun mahsulot. - Tarjimalar — Hujjatning ingliz tilidan bo'lmagan (tarjima qilingan) versiyasi, shu jumladan ushbu hujjatdagi huquqiy ma'lumotlar faqat ma'lumot uchun. Tarjima qilingan va ingliz tilidagi versiyalar o'rtasida tafovut bo'lgan taqdirda ingliz tilidagi versiya ustunlik qiladi.
- Xavfsizlik — Xaridor barcha NXP mahsulotlari noma'lum zaifliklarga duchor bo'lishi yoki ma'lum cheklovlar bilan belgilangan xavfsizlik standartlari yoki spetsifikatsiyalarini qo'llab-quvvatlashi mumkinligini tushunadi. Xaridor ushbu zaifliklarning mijoz ilovalari va mahsulotlariga ta'sirini kamaytirish uchun o'z ilovalari va mahsulotlarining butun hayoti davomida dizayni va ishlashi uchun javobgardir. Mijozning mas'uliyati mijozning ilovalarida foydalanish uchun NXP mahsulotlari tomonidan qo'llab-quvvatlanadigan boshqa ochiq va/yoki xususiy texnologiyalarga ham tegishli. NXP hech qanday zaiflik uchun javobgarlikni o'z zimmasiga olmaydi. Mijoz muntazam ravishda NXP xavfsizlik yangilanishlarini tekshirib turishi va tegishli tarzda kuzatib borishi kerak. Xaridor mo'ljallangan dasturning qoidalari, qoidalari va standartlariga eng yaxshi javob beradigan xavfsizlik xususiyatlariga ega mahsulotlarni tanlashi va o'z mahsulotlari bo'yicha yakuniy dizayn qarorlarini qabul qilishi va mahsulotiga nisbatan barcha qonunchilik, tartibga solish va xavfsizlik talablariga muvofiqligi uchun faqat javobgar bo'lishi kerak. NXP tomonidan taqdim etilishi mumkin bo'lgan har qanday ma'lumot yoki yordam.
NXP-da NXP mahsulotlarining xavfsizlik zaifliklarini tekshirish, hisobot berish va yechimlarni chiqarishni boshqaradigan Mahsulot xavfsizligi hodisalariga javob berish guruhi (PSIRT) mavjud (PSIRT@nxp.com manzilida mavjud).
NXP B.V. — NXP B.V. operatsion kompaniya emas va u mahsulotlarni tarqatmaydi yoki sotmaydi.
Savdo belgilari
Eslatma: Barcha havola qilingan brendlar, mahsulot nomlari, xizmat nomlari va savdo belgilari ularning tegishli egalarining mulki hisoblanadi.
NXP — soʻz belgisi va logotip NXP BV savdo belgilaridir
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, mVision, Versatile — AQSh va/yoki Arm Limited (yoki uning sho‘ba yoki filiallari) savdo belgilari va/yoki ro‘yxatdan o‘tgan savdo belgilaridir. boshqa joyda. Tegishli texnologiya har qanday yoki barcha patentlar, mualliflik huquqlari, dizaynlar va tijorat sirlari bilan himoyalangan bo'lishi mumkin. Barcha huquqlar himoyalangan.
- i.MX — NXP BV savdo belgisidir
- J-Link — SEGGER Microcontroller GmbH kompaniyasining savdo belgisidir.
Microsoft, Azure va ThreadX — Microsoft kompaniyalar guruhining savdo belgilaridir.
Shuni yodda tutingki, ushbu hujjat va bu yerda tasvirlangan mahsulot(lar)ga oid muhim eslatmalar “Huquqiy maʼlumotlar” boʻlimiga kiritilgan.
© 2024 NXP BV
Qo'shimcha ma'lumot uchun quyidagi manzilga tashrif buyuring: https://www.nxp.com
- Chiqarish sanasi: 19 aprel 2024 yil
- Hujjat identifikatori: AN14263
TSS
Savol: Ushbu mahsulotning asosiy maqsadi nima?
Javob: Asosiy maqsad - oddiy LVGL GUI sobiq bilan AI va ML ko'rish algoritmi modelidan foydalangan holda yuzni aniqlash funksiyasini yoqishampSLN-TLHMI-IOT platasida.
Savol: Dasturchilar ushbu ilova eslatmasidan qanday foyda olishlari mumkin?
Javob: Ishlab chiquvchilar taqdim etilgan eski dastur yordamida bosqichma-bosqich ramkada yuzni aniqlashni qanday amalga oshirishni o'rganishlari mumkin.ampqurilma menejerlari, HAL qurilmalari va voqea mexanizmlarini tushuning.
Hujjatlar / manbalar
![]() |
NXP AN14263 Framewor-da LVGL GUI yuzni aniqlashni amalga oshirish [pdf] Foydalanuvchi uchun qoʻllanma AN14263 Framewor-da LVGL GUI yuzni tanishni, AN14263-ni, Framewor-da LVGL GUI yuzni aniqlashni, Framewor-da LVGL GUI yuzni tanib olishni, Framewor-da yuzni tanib olishni, Framewor-da, ramkada tanishni amalga oshirish |