NXP AN14263 Zbatoni njohjen e fytyrës LVGL GUI në Framewor
Informacioni i produktit
Specifikimet
- Emri i produktit: LVGL GUI Face Njohja në kuadër
- Rishikimi i dokumentit: 1 - 19 prill 2024
- Fjalë kyçe: Njohja e fytyrës, LVGL GUI, Framework
Udhëzimet e përdorimit të produktit
- Mbiview
Ky produkt mundëson modelin e algoritmit të vizionit AI&ML për njohjen e fytyrës në një kornizë për të zbatuar funksionin e njohjes së fytyrës me një GUI të thjeshtë LVGL example në tabelën SLN-TLHMI-IOT. - Kuadri Mbiview
Softueri i zgjidhjes është projektuar rreth arkitekturës kornizë që përfshin menaxherët e pajisjeve përgjegjës për menaxhimin e pajisjeve, pajisjet HAL për të abstraktuar detajet themelore dhe ngjarjet për komunikimin midis pajisjeve të ndryshme. - Veçoritë
Produkti lejon zbatimin e funksionit të njohjes së fytyrës përmes kamerës paraview në ekranin GUI me butona për të aktivizuar regjistrimin, njohjen dhe heqjen e fytyrës. Të dhënat e regjistruara të fytyrës ruhen në Flash nëpërmjet a file sistemi. - Përmbajtja e shënimit të aplikacionit
Shënimi i aplikacionit paraqet një ekran GUI LVGL me kamerë paraview dhe butonat për veprimet që lidhen me fytyrën. Ai i ndihmon zhvilluesit të kuptojnë kornizën dhe mënyrën e zbatimit të njohjes së fytyrës duke përdorur shembullin e dhënëample.
Mbiview
NXP ka lançuar një komplet të zhvillimit të zgjidhjeve të quajtur SLN-TLHMI-IOT që fokusohet në aplikacionet inteligjente HMI. Ai mundëson HMI inteligjente me ndërfaqe ML vizion, zë dhe grafikë të zbatuar në një MCU NXP i.MX RT117H. Bazuar në SDK, softueri i zgjidhjes është ndërtuar në një dizajn të quajtur kornizë që mbështet dizajne fleksibël dhe personalizim të funksioneve të vizionit dhe zërit. Për të ndihmuar përdoruesit të përdorin më mirë platformën softuerike, ofrohen disa dokumente bazë, p.shample, udhëzuesi i përdoruesit për zhvillimin e softuerit. Udhëzuesi prezanton dizajnin bazë të softuerit dhe arkitekturën e aplikacioneve që mbulojnë të gjithë komponentët e zgjidhjes duke përfshirë kornizën për të ndihmuar zhvilluesit të zbatojnë më lehtë dhe me efikasitet aplikacionet e tyre duke përdorur SLN-TLHMI-IOT.
Për më shumë detaje rreth zgjidhjes dhe dokumenteve përkatëse, vizitoni web faqja e zgjidhjes NXP EdgeReady Smart HMI e bazuar në i.MX RT117H me ML Vision, Voice dhe UI grafike. Megjithatë, nuk është ende aq e lehtë për zhvilluesit që të zbatojnë aplikacionet e tyre inteligjente HMI duke iu referuar këtyre udhëzuesve bazë. Një seri shënimesh aplikimi janë planifikuar për të ndihmuar në studimin e zhvillimit të kornizës hap pas hapi. Ky shënim aplikacioni bazohet në Implemento LVGL GUI Camera Preview mbi Kornizën (dokumenti AN14147). Ky shënim aplikacioni përshkruan se si të aktivizoni modelin e algoritmit të vizionit AI&ML për njohjen e fytyrës në kornizë për të zbatuar funksionin e njohjes së fytyrës përmes kamerës paraview në ekranin GUI me një GUI të thjeshtë LVGL p.shample në tabelën SLN-TLHMI-IOT. Në shënimin e aplikimit, ishample paraqet një ekran GUI LVGL me një kamerë paraview dhe disa butona për të aktivizuar regjistrimin, njohjen dhe heqjen e fytyrës. Të dhënat e regjistruara të fytyrës ruhen në Flash përmes pak file sistemi.
Në një nivel të lartë, shënimi i aplikacionit përmban përmbajtjen e mëposhtme:
- Aktivizo veçorinë e njohjes së fytyrës në kornizë.
- Shtoni mbështetjen e bazës së të dhënave të fytyrës në kornizë nëpërmjet file sistemi në Flash.
- Zbatoni aplikacionin LVGL GUI. Nëpërmjet hyrjeve të mësipërme, ky dokument i ndihmon zhvilluesit të:
- Kuptoni më thellë kornizën dhe softuerin e zgjidhjes inteligjente HMI.
- Zhvilloni njohjen e fytyrës së tyre AI&ML në kornizë me aplikacionin LVGL GUI.
Korniza përfundoiview
Softueri i zgjidhjes është projektuar kryesisht rreth përdorimit të arkitekturës kornizë që përbëhet nga disa pjesë të ndryshme:
- Menaxherët e pajisjeve - pjesa kryesore
- Pajisjet e shtresave të abstraksionit të harduerit (HAL).
- Mesazhet/Ngjarjet
Siç tregohet në figurën 1, mbiview i mekanizmit të kornizës është:
Menaxherët e pajisjeve janë përgjegjës për menaxhimin e pajisjeve të përdorura nga sistemi. Çdo lloj pajisjeje (hyrje, dalje dhe kështu me radhë) ka menaxherin e vet të pajisjes specifike për llojin. Me një menaxher pajisjeje që fillon pasi pajisjet janë regjistruar në të, ai pret dhe kontrollon një mesazh për të transferuar të dhëna te pajisjet dhe menaxherët e tjerë pas inicializimit dhe fillimit të pajisjeve të regjistruara. Pajisjet HAL shkruhen në krye të kodit të drejtuesit të nivelit më të ulët, duke ndihmuar në rritjen e kuptueshmërisë së kodit duke abstraguar shumë nga detajet themelore.
Ngjarjet janë një mjet me të cilin informacioni komunikohet ndërmjet pajisjeve të ndryshme nëpërmjet menaxherëve të tyre. Kur aktivizohet një ngjarje, pajisja që mori për herë të parë ngjarjen ia komunikon atë ngjarje menaxherit të saj, më pas nga ana e saj njofton menaxherët e tjerë të caktuar për të marrë ngjarjen.
Dizajni arkitektonik i kornizës u përqendrua në tre qëllime kryesore:
- Lehtësia e përdorimit
- Fleksibiliteti/Portueshmëria
- Performanca
Korniza është projektuar me qëllimin për të përshpejtuar kohën në treg për vizionin dhe aplikacionet e tjera të mësimit të makinës. Për të siguruar një kohë të shpejtë në treg, është thelbësore që vetë softueri të jetë i lehtë për t'u kuptuar dhe modifikuar. Duke pasur parasysh këtë qëllim, arkitektura e kornizës është e lehtë për t'u modifikuar pa qenë kufizuese dhe pa kushtuar performancën.
Për më shumë detaje rreth kornizës, shihni Udhëzuesin e Përdoruesit për Zhvillimin e Softuerit Smart HMI (dokumenti MCU-SMHMI-SDUG).
Biblioteka grafike e lehtë dhe e gjithanshme (LVGL)
LVGL (Biblioteka grafike e lehtë dhe e gjithanshme) është një bibliotekë grafike falas dhe me burim të hapur që ofron gjithçka që ju nevojitet për të krijuar një GUI të integruar me elementë grafikë të lehtë për t'u përdorur, efekte të bukura vizuale dhe gjurmë të ulët memorie.
Udhëzues GUI
GUI Guider është një mjet zhvillimi i ndërfaqes grafike të përdoruesit, miqësor për përdoruesit nga NXP që mundëson zhvillimin e shpejtë të ekraneve me cilësi të lartë me bibliotekën grafike LVGL me burim të hapur. Redaktori drag-and-drop i GUI Guider e bën të lehtë përdorimin e shumë veçorive të LVGL si miniaplikacionet, animacionet dhe stilet për të krijuar një GUI me kodim minimal ose pa fare.
Me klikimin e një butoni, ju mund ta ekzekutoni aplikacionin tuaj në një mjedis të simuluar ose ta eksportoni atë në një projekt të synuar. Kodi i gjeneruar nga GUI Guider mund të shtohet lehtësisht në projektin tuaj, duke përshpejtuar procesin e zhvillimit dhe duke ju lejuar të shtoni pa probleme një ndërfaqe përdoruesi të integruar në aplikacionin tuaj. GUI Guider është i lirë për t'u përdorur me MCU-të për qëllime të përgjithshme dhe ndërthurje të NXP-së dhe përfshin shabllone të integruara të projektit për disa platforma të mbështetura. Për të mësuar më shumë rreth zhvillimit të LVGL dhe GUI në Udhëzuesin GUI, kontrolloni Bibliotekën e Grafikës së lehtë dhe të gjithanshme dhe Udhëzuesin GUI.
Mjedisi i zhvillimit
Së pari, përgatitni dhe konfiguroni mjedisin e harduerit dhe softuerit për zbatimin e ishample mbi kornizën.
Mjedisi i harduerit
Mjedisi i harduerit është krijuar për verifikimin e ishampe:
- Kompleti i zhvillimit inteligjent HMI i bazuar në NXP i.MX RT117H (kompleti SLN_TLHMI_IOT)
- SEGGER J-Link me një përshtatës Cortex-M 9-pin dhe V7.84a ose një version më të ri të drejtuesit
mjedisi Software
Mjedisi i softuerit është krijuar për zhvillimin e ishampe:
- MCUXpresso IDE V11.7.0
- Guider GUI V1.6.1-GA
- lvgl_gui_camera_preview_cm7 – p.shampkodi i shënimit të dytë të aplikacionit si softueri bazë i zhvillimit. Për detaje, shihni https://mcuxpresso.nxp.com/appcodehub.
- RT1170 SDK V2.13.0 – si burim kodi për zhvillimin.
- Softueri SLN-TLHMI-IOT V1.1.2 – kodi burimor i zgjuar HMI i lëshuar në depon e NXP GitHub si burim kodi për zhvillimin. Për detaje, shihni: GitHub – NXP/mcu-smhmi në v1.1.2
Për detaje rreth blerjes dhe konfigurimit të mjedisit të softuerit, shihni: Fillimi me SLN-TLHMI-IOT.
Arkitektura e vizionit në kornizë
Arkitektura e vizionit në kornizë është paraqitur në figurën 2. Algo e vizionit HAL (OASIS_HAL) ka proceset e mëposhtme:
- Bëni regjistrimin dhe njohjen e fytyrave përmes modelit të algoritmit të vizionit AI&ML pasi të merrni ngjarjet përkatëse nga UI HAL dalëse. Njoftoni rezultatet e konkluzionit nga modeli i algoritmit në UI dalëse HAL.
- Qas (shtoni, fshini…) bazën e të dhënave të veçorive të fytyrës bazuar në pak file sistemi duke thirrur API-të e FaceDB HAL pas marrjes së ngjarjeve të lidhura nga UI HAL dalëse.
- Kërkoni kornizën e videos së kamerës nga kamera HAL kur bëni regjistrimin dhe njohjen e fytyrës.
Zbatoni njohjen e fytyrës në kornizë
Njohja e fytyrës LVGL GUI p.shample (ishample ofrohet më vonë) mbi kornizën zbatohet në bazë të shampkodet e Implemento LVGL GUI Camera Preview mbi Kornizën (dokumenti AN14147).
Për demonstrimin e njohjes së fytyrës në p.shampLe, funksioni bazë i aplikacionit GUI (shih ekranin kryesor në Figurën 3) është projektuar siç përshkruhet më poshtë:
- Aplikacioni GUI aktivizon ngjarjen e regjistrimit ose të njohjes së fytyrës në UI dalëse HAL kur klikoni butonin Regjistrim ose Njohje. Dhe UI dalëse HAL njofton ngjarjen e shtimit të një përdoruesi në algon e vizionit HAL pasi regjistrimi i fytyrës të jetë i suksesshëm.
- Aplikacioni GUI shkakton ngjarjen e fshirjes së një përdoruesi në UI HAL dalëse kur klikoni butonin Fshi përdoruesin pasi të njihet fytyra e përdoruesit.
- Aplikacioni GUI shkakton ngjarjen e ndalimit të algut të oazës që funksionon në UI HAL dalëse kur klikoni ekranin jashtë butonave dhe imazheve.
Përgatitja e paketës softuerike për zbatimin e p.shample.
- Klononi softuerin bazë lvgl_gui_camera_preview_cm7. Ndryshoni emrin e projektit dhe kryesor fileemrin lvgl_gui_face_rec_cm7.
- Korniza duhet të përditësohet në softuer pasi kodet burimore për bërthamën e kornizës kanë filluar të bëhen publike në GitHub nga versioni 1.1.2.
- Zëvendësoni dosjen e kornizës me kopjen e V1.1.2 nga GitHub me përjashtim të files fwk_log.h dhe fwk_common.h nën inc\ pasi ato janë modifikuar për serinë e shënimeve të aplikacionit. Operacionet janë paraqitur në Figurën 4:
- Fshini dosjen framework_cm7 nën grupin libs dhe hiqni kornizën e bibliotekës_cm7 dhe shtegun e saj të kërkimit të konfiguruar te Projekti > Vetitë > Ndërtimi i C/C++ > Cilësimet > Cilësimet e veglave > MCU C++ Lidhësi > Bibliotekat pasi është dhënë kodi burimor i bërthamës.
Aktivizo funksionin e njohjes së fytyrës në kornizë
Veçoria e njohjes së fytyrës është ndërtuar në modelin e algoritmit të vizionit ML të ofruar si një bibliotekë statike - një bibliotekë oasis lite në kohëzgjatje nga NXP. Biblioteka është një bibliotekë e vogël, shumë efikase, e personalizuar dhe e optimizuar e AI. Modeli përfshin zbulimin e fytyrës, njohjen e fytyrës, zbulimin e xhamit dhe zbulimin e gjallërisë. Kryesisht ofron API-në OASISLT_run_extended() për të ekzekutuar tubacionin e njohjes së fytyrës gjatë përditësimit të rezultateve te thirrësi përmes kthimeve të ngjarjeve dhe për të shtuar/përditësuar/fshirë fytyrat në bazën e të dhënave përmes thirrjeve kthyese të bazës së të dhënave të fytyrës pas specifikimit të informacionit të kornizës burimore, kthimeve të thirrjeve dhe kujtesës. grupi i përdorur nga biblioteka duke thirrur një API tjetër OASISLT_init() në inicializimin. Thirrja e API-ve dhe funksionet e kthimit të thirrjes zbatohen në algon e vizionit HAL të kornizës.
Shto bibliotekën e modelit të algo vizion
- Kopjo oazën e dosjes që përmban bibliotekën dhe titullin përkatës file nga smart HMI\coffee_machine\cm7\libs\ në dosjet e dosjeve të ishample SW.
- Shtoni shtegun e kërkimit të kokës file në Project > Properties > C/C++ Build > settings > Tool Settings > MCU C Compiler > Includes and MCU C++ Compiler > Përfshin: “${workspace_loc:/${ProjName}/libs/oasis/include}”
- Shtoni lib dhe shtegun e tij të kërkimit te Projekti > Karakteristikat > Ndërtimi i C/C++ > cilësimet > MCU C+ + Lidhësi > Bibliotekat: liboasis_lite2D_DEFAULT_117f_ae.a "${workspace_loc:/${ProjName}/libs/oasis}" dhe përkufizimin makro në aktivizoni veçorinë te Projekti > Karakteristikat > Ndërtimi i C/C++ > Cilësimet > Cilësimet e veglave > Përpiluesi MCU C > Përpiluesi paraprocesor dhe përpiluesi MCU C++ > Paraprocesori: SMART_TLHMI_2D
Aktivizo algo vizion HAL
Algo e vizionit HAL e shtyn modelin e algos së vizionit të funksionojë dhe i përgjigjet rezultateve në daljen e UI-së HAL pas marrjes së ngjarjeve prej tij.
Për ta aktivizuar, klononi drejtuesin e ngjashëm HAL ekzistues file ku zbatohen funksionet e mëposhtme:
- Zbatoni kthimet e thirrjeve të operacioneve të bazës së të dhënave të fytyrës dhe trajtimit të ngjarjeve.
- Drejtoni algon e vizionit të funksionojë duke telefonuar API-të e bibliotekës së oazës.
- Hyni në bazën e të dhënave të fytyrave të përdoruesit dhe bazës së të dhënave të aplikacioneve (nuk nevojitet në p.shample).
- Merrni ngjarje nga dhe dërgoni rezultatet në dalje të UI HAL.
Punimet kryesore për zbatimin e HAL për ishampjanë:
- Klononi drejtuesin e ngjashëm HAL ekzistues file dhe ndryshoni emrat e lidhur.
- Hiq kodet që lidhen me operacionet e të dhënave të aplikacionit.
- Përditësoni përkufizimet dhe funksionet për trajtimin e ngjarjeve nga UI dalëse HAL sipas exampdizajni.
- Shtoni konfigurimet e kërkuara në inicializimin e oazit.
Hapat e detajuar janë si më poshtë:
- Klononi hal_vision_algo_oasis_coffeemachine.c. Ndryshoni fileemri në hal_vision_algo_oasis_guifacerec.c. Dhe zëvendësoni të gjitha vargjet CoffeeMachine me GUIFaceRec në file.
- Hiq kodet që përmbajnë vargun coffeedb (jo i ndjeshëm ndaj shkronjave të vogla) në lidhje me bazën e të dhënave të aplikacionit, p.sh.ample, #include hal_sln_coffeedb.h.
- Modifikoni funksionin HAL_VisionAlgoDev_OasisGUIFaceRec_InputNotify() për trajtimin e ngjarjeve nga HAL UI dalëse.
- Ndryshoni përkufizimin e ngjarjes kEventFaceRecId_RegisterCoffeeSelection në kEventFaceRecId_RegisterUserFace dhe vargun e strukturës regCoffeeSelection në regGUIFaceRec për trajtimin e ngjarjeve për të shtuar të dhëna të reja të veçorive të fytyrës në bazën e të dhënave.
- Për të treguar procesin standard të veprimeve të njohjes së fytyrës në p.shample, modifikoni trajtimin në rastin e kEventFaceRecID_OasisSetState me përkufizimet e gjendjeve:
- kOASISLiteState
- Regjistrimi kOASISLiteState
- Njohja kOASISLiteState
- Ndaloi
- Shtoni dhe modifikoni përkufizimet e ngjarjeve të përmendura në hapin e mësipërm.
- Kopjoni kokën file smart_tlhmi_event_descriptor.h nga smart HMI\coffee_machine \cm7\source\event_handlers\ në burimin e dosjes së ishample SW. Përditësoni file si më poshtë:
- Ndrysho përkufizimin e ngjarjes kEventFaceRecId_RegisterCoffeeSelection në kEventFaceRecId_RegisterUserFace në llojin enum _event_smart_tlhmi_id dhe vargun e strukturës regCoffeeSelection në regGUIFaceRec në strukturën _eventh.smart_ Pra, ndryshoni strukturën register_coffee_selection_event_t për regCoffeeSelection në register_gui_facerec_event_t.
- Fshi përmbajtjet e tjera të përdorura për aplikacionin e aparatit të kafesë, p.shample, rreshti i kodit për zërin: #include "hal_event_descriptor_voice.h".
- Shtoni llojet kOASISLiteState_Stopped dhe kOASISLiteState_Running në llojin enum oasis_lite_state_t në hal_vision_algo.h nën frame>hal>vision në projekt si më poshtë:
typedef enum _oasis_lite_state {- kOASISLiteState
- Po punon, kOASISLiteState
- Ndaloi, kOASISLiteState
- Njohja,
- kOASISLiteState
- Regjistrimi, kOASISLiteState
- Çregjistrimi, kOASISLiteState
- Regjistrimi në distancë, kOASISLiteState
- Numëroni
- Përdorni strukturën e përditësuar të mësipërm oasis_lite_state_t për të rafinuar strukturën oasis_state_event_t në hal_event_descriptor_face_rec.h nën frame>hal>vizion në projekt si më poshtë: typedef struct _oasis_state_event_t { oasis_lite_state_t state; } oasis_state_event_t;
- Ndrysho të gjitha kEventInfo_Remote në kEventInfo_Local për dërgimin e ngjarjeve nga algo e vizionit HAL te HAL-të e tjera që funksionojnë në të njëjtën bërthamë si një bërthamë në vend të dy bërthamës që përdoret në ish.ample.
- Shtoni dhe modifikoni konfigurimet e mëposhtme për inicializimin e oazës në OASISLT_init():
- Shtoni përkufizimet makro dhe seksionet e kujtesës për kornizën e videos në board_define.h: #define OASIS_RGB_FRAME_WIDTH 800
- #define OASIS_RGB_FRAME_HEIGHT 600
- #define OASIS_RGB_FRAME_SRC_FORMAT kPixelFormat_YUV1P444_RGB
- #define OASIS_RGB_FRAME_BYTE_PER_PIXEL 3
- #define AT_FB_SHMEM_SECTION_ALIGN(var, alignbytes) \
- __atributi__((seksioni(".bss.$fb_sh_mem,\"aw\",%nobits @"))) var
- __atribut__((linjëzuar(linjëbajt)))
- Konfiguro caktimin e memories në seksionin e mësipërm të memories fb_sh_mem në Project > Properties > C/C++ Build > MCU Settings treguar në Figurën 5:
- Deklaroni variablin global g_DTCOPBuf në lvgl_gui_face_rec_cm7.cpp: AT_NONCACHEABLE_SECTION_ALIGN_DTC (uint8_t g_DTCOPBuf[DTC_OPTIMIZE_BUFFER_SIZE], 4);
- Vazhdoni të shtoni përkufizimet e përdorura në variablin e mësipërm:
- Përcaktoni seksionin e mësipërm në board_define.h:
- #define AT_NONCACHEABLE_SECTION_ALIGN_DTC(var, alignbytes) \
- atribut__((seksion(".bss.$SRAM_DTC_cm7,\"aw\",%nobits @"))) var
- atributi__((linjëzuar (linjëbajt)))
- Përfshi kokën file hal_vision_algo.h që përmban përkufizimin makro DTC_OPTIMIZE_BUFFER_SIZE në app_config.h të përfshirë në lvgl_gui_face_rec_cm7.cpp.
- Shtoni përkufizimet makro dhe seksionet e kujtesës për kornizën e videos në board_define.h: #define OASIS_RGB_FRAME_WIDTH 800
- Cakto variablin s_debugOption në true për të treguar statusin e progresit në njohjen e fytyrës.
- Shtoni shtegun e kërkimit të kokës files të vizionit HAL në Projekt > Vetitë > Ndërtimi i C/C++ > Cilësimet > Cilësimet e veglave > Përpiluesi MCU C > Përpiluesi përfshin dhe MCU C++ > Përfshin: "${workspace_loc:/${ProjName}/framework/hal/vision}"
- Shto përkufizimin e mëposhtëm për të aktivizuar algon e vizionit HAL në board_define.h: #define ENABLE_VISIONALGO_DEV_Oasis_GUIFaceRec
Aktivizo UI dalëse HAL
UI dalëse HAL njofton ngjarjet në algon e vizionit HAL dhe i përgjigjet rezultateve të konkluzioneve nga algo e vizionit HAL. Me aplikacionin GUI, ngjarjet në përgjithësi aktivizohen nga aplikacioni dhe rezultatet shfaqen në aplikacion.
Për ta aktivizuar, klononi drejtuesin e ngjashëm HAL ekzistues file ku në përgjithësi zbatohen funksionet e mëposhtme:
- Njoftoni ngjarjet për njohjen e fytyrës dhe aksesin në bazën e të dhënave.
- Zbatoni kthimet e thirrjeve për aplikacionin GUI për të aktivizuar ngjarjet.
- Trajtoni rezultatet e konkluzioneve nga moduli i algos së vizionit.
- Trego procesin dhe rezultatet e trajtimit të ngjarjeve në ndërfaqen e përdoruesit nga shiriti i progresit i kontrolluar me kohëmatësit dhe drejtkëndëshin udhëzues të fytyrës.
Punimet kryesore për zbatimin e HAL për ishampTë përdorura në këtë dokument janë:
- Klononi drejtuesin e ngjashëm HAL ekzistues file dhe ndryshoni emrat e lidhur.
- Hiq kodet që lidhen me aplikacionin.
- Përditësoni funksionet për njoftimin e ngjarjeve dhe përgjigjen e rezultateve sipas p.shampdizajni.
- Shto kthimet e thirrjeve për aplikacionin GUI për të aktivizuar ngjarjet.
Hapat e detajuar janë si më poshtë:
- Klononi hal_output_ui_coffee_machine.c. Ndryshoni fileemri në hal_ output_ui_guifacerec.c.
- Zëvendësoni të gjitha vargjet CoffeeMachine me GUIFaceRec në file.
- Hiqni kodet që lidhen me aplikacionin - aparat kafeje.
- Hiqni funksionet WakeUp() dhe _StandBy() dhe kodet përkatëse (mund të kërkojnë vargun wake_up dhe standby për to).
- Hiqni paraview Ngjarjet e modalitetit që trajtojnë kodet e lidhura në HAL_OutputDev_UiGUIFaceRec_Input Notify().
- Hiq funksionet UI_xxx_Callback() dhe kodet që përmbajnë vargun gui_ dhe ekranin që lidhen me GUI-në e aparatit të kafesë, përveç gui_set_virtual_face() për paraview funksioni i modalitetit.
- Hiq të gjitha kodet e përfshira me variablat s_IsWaitingAnotherSelection dhe s_IsWaitingRegisterSelection që lidhen me aplikacionin e aparatit të kafesë.
- Hiqni kodet që lidhen me zërin, audion dhe gjuhën. Për shembullampe:
- #include "hal_voice_algo_asr_local.h",
- #include "hal_event_descriptor_voice.h"
- Për njoftimin e ngjarjeve të ndryshme, zbatoni funksionet e reja _OutputManagerNotify(), _SetFaceRec(), _RegisterGUIFaceRec() dhe DeregisterGUIFaceRec() duke iu referuar funksioneve _StopFaceRec(), _RegisterCoffeeSelection() dhe DeregisterCoffeeS para heqjes së tyre.
- _OutputManagerNotify() zbaton funksionin bazë të daljes së ngjarjes për të dërguar një ngjarje në algon e vizionit HAL. Funksionet e mëposhtme e thërrasin atë për të dërguar ngjarjet e tyre.
- _SetFaceRec() dërgon ngjarjen kEventFaceRecID_OasisSetState për të aktivizuar algon e vizionit për regjistrimin e fytyrës, njohjen dhe ndalimin e algut.
- _RegisterGUIFaceRec() dërgon ngjarjen kEventFaceRecId_RegisterGUIFaceRec që është përcaktuar në smart_tlhmi_event_descriptor.h për të shtuar të dhënat e veçorive të fytyrës në bazën e të dhënave kur regjistrimi është në rregull.
- DeregisterGUIFaceRec() dërgon ngjarjen kEventFaceRecID_DelUser për të fshirë të dhënat e veçorive të fytyrës nga baza e të dhënave kur kalon njohjen e fytyrës.
- Përditësoni kodet për të ndërmarrë veprimet përkatëse duke përfshirë rifreskimin e GUI-së duke thirrur API-të nga aplikacioni LVGL GUI për rezultatet e konkluzioneve të regjistrimit dhe njohjes së fytyrës në funksionin _InferComplete_Vision() sipas ishample's design. Për shembullample, kur regjistrimi i fytyrës është i suksesshëm,
- Ndalo shfaqjen e progresit duke thirrur _FaceRecProcess_Stop();
- Ndalo regjistrimin e fytyrës duke thirrur _SetFaceRec(kOASISLiteState_Stopped);
- Trego rezultatin e suksesshëm në GUI: gui_show_face_rec_result(kFaceRecResult_OK, s_UserId);
- Regjistroni të dhënat e fytyrës në bazën e të dhënave: _RegisterUserFace(s_UserId);
- Shtoni funksionet e kthimit të thirrjes së ndërfaqes së përdoruesit për të trajtuar ngjarjet: paraview, regjistrimi i fytyrës, njohja dhe fshirja e përdoruesit të aktivizuara nga GUI. Për shembullample, kthimi i thirrjes së regjistrimit të fytyrës: void UI_Registration_Callback(){ _SetFaceRec(kOASISLiteState_Registration); _FaceRecProcess_Start(); }
- Dhe shtoni funksionet _FaceRecProcess_Start() dhe _FaceRecProcess_Stop() për të treguar progresin dhe statusin në ngjarjet dhe rezultatet e ndryshme.
- Përditëso funksionin e kthimit të thirrjes ISR të kohëmatësit _SessionTimer_Callback() për të trajtuar rastin e skadimit duke thirrur: gui_show_face_rec_result(kFaceRecResult_TimeOut, s_UserId);
- Shtoni përkufizimet e mëposhtme për të aktivizuar daljen e ndërfaqes së përdoruesit HAL në board_define.h: #define ENABLE_OUTPUT_DEV_UiGUIFaceRec
Njoftim:
Për të paraqitur më mirë veçorinë e njohjes së fytyrës, mbajeni funksionin për të shfaqur procesin dhe rezultatet e njohjes së fytyrës në UI HAL dalëse. Funksioni përshkruhet si më poshtë
- Drejtkëndëshi udhëzues i fytyrës tregon blu dhe shiriti i përparimit tregon përparimin kur fillon regjistrimi ose njohja e fytyrës.
- Drejtkëndëshi udhëzues i fytyrës shfaqet i kuq kur regjistrimi i fytyrës është i suksesshëm.
- Drejtkëndëshi udhëzues i fytyrës shfaqet i gjelbër kur njohja e fytyrës është e suksesshme.
- Drejtkëndëshi udhëzues i fytyrës mbetet blu dhe shiriti i përparimit tregon përparimin e plotë kur veprimi është i pasuksesshëm pas skadimit të kohëmatësit. Në atë pikë, ndaloni regjistrimin ose njohjen e fytyrës.
Shiriti i përparimit dhe drejtkëndëshi udhëzues i fytyrës paraqiten si ikona që janë të integruara në binarin e burimeve file për t'u programuar në Flash. Treguesit për të dhënat e ikonave në SDRAM vendosen në funksionin LoadIcons(APP_ICONS_BASE) i thirrur në inicializimin e pajisjes UI HAL në dalje në UI HAL dalëse. Duhet të zbatojë mbështetjen e ikonave për funksionin.
Zbatoni mbështetjen e ikonave
- Ndërtoni burimin duke kombinuar ikonat me imazhet e përdorura në aplikacionin LVGL GUI:
- Klononi kokën e katër ikonave files process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h dhe virtual_face_red_420x426.h nga smart HMI
\makinë kafeje\burimi\ikona\ te ikonat e dosjeve të reja nën dosjen e burimeve të ishample SW. - Shtoni shtegun e kërkimit për ikonën katër files në kamera_preview_resource.txt file në dosjen e burimeve, për shembullample: ikona ../resource/icons/process_bar_240x14.h
- Ekzekutoni camera_preview_resource_build.bat për të ndërtuar burimet e imazheve dhe ikonave për të gjeneruar koshin file kamera_paraview_resource.bin dhe informacionin file resource_information_table.txt (Shih Figurën 6).
- Klononi kokën e katër ikonave files process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h dhe virtual_face_red_420x426.h nga smart HMI
- Përcaktoni adresën e fillimit në SDRAM dhe madhësinë e ikonave në app_config.h. Adresa fillon pranë imazheve të aplikacionit GUI. Madhësia gjenerohet në informacion file. #define APP_ICONS_BASE (APP_RES_SHMEM_BASE + APP_LVGL_IMGS_SIZE) #define APP_ICONS_SIZE 0x107c40
- Përditësoni madhësinë e caktuar të seksionit të kujtesës të quajtur res_sh_mem në 0x200000 duke e ripërcaktuar atë në app_config.h: #define RES_SHMEM_TOTAL_SIZE 0x200000 dhe cilësimin përkatës te Projekti > Karakteristikat > C/C++ Build > Cilësimet MCU.
- Shtoni madhësinë e ikonës në madhësinë totale të burimit të ngarkuar nga Flash në SDRAM në funksionin APP_LoadResource() në pjesën kryesore file lvgl_gui_face_rec_cm7.cpp: memcpy((void *)APP_LVGL_IMGS_BASE, pLvglImages, APP_LVGL_IMGS_SIZE + APP_ICONS_SIZE);
Njoftim: Për të përfunduar funksionin e njohjes së fytyrës, nevojitet mbështetja e aplikacionit LVGL GUI. Funksionet e kthimit të thirrjes së UI në UI HAL dalëse thirren nga aplikacioni GUI LVGL për trajtimin e ngjarjeve nga ekrani i ndërfaqes së përdoruesit. Nga ana tjetër, UI dalëse HAL thërret API-të nga aplikacioni LVGL GUI për të përditësuar UI për të treguar rezultatin dhe statusin. Zhvillimi i aplikacionit LVGL GUI është relativisht i pavarur dhe i prezantuar në seksionin 4.3.
4.1.5 Nisni pajisjet dhe menaxherët HAL për njohjen e fytyrës
Algo e aktivizuar e vizionit HAL dhe UI dalëse HAL dhe menaxherët e tyre janë nisur kryesisht file
lvgl_gui_face_rec_cm7.cpp duke ndjekur konvertimet e zhvillimit në kornizë si më poshtë:
- Përfshi kokën file lidhur me dy menaxherët HAL duke shtuar linjën e kodit:
- #include " fwk_output_manager.h "
- #include "fwk_vision_algo_manager.h"
- Deklaroni pajisjet HAL:
- HAL_VALGO_DEV_DECLARE(OasisGUIFaceRec);
- HAL_OUTPUT_DEV_DECLARE(UiGUIFaceRec);
- Regjistroni pajisjet HAL:
- HAL_VALGO_DEV_REGISTER (OasisGUIFaceRec, ret);
- HAL_OUTPUT_DEV_REGISTER (UiGUIFaceRec, ret);
- Inicializoni menaxherët:
- FWK_MANAGER_INIT(VisionAlgoManager, ret);
- FWK_MANAGER_INIT(OutputManager, ret);
- Filloni menaxherët:
- FWK_MANAGER_START(VisionAlgoManager, VISION_ALGO_MANAGER_TASK_PRIORITY, ret);
- FWK_MANAGER_START(OutputManager, OUTPUT_MANAGER_TASK_PRIORITY, ret);
- Përcaktoni prioritetin e detyrave të menaxherit:
- #define VISION_ALGO_MANAGER_TASK_PRIORITY 3
- #define OUTPUT_MANAGER_TASK_PRIORITY 1
Shto mbështetjen e bazës së të dhënave të fytyrës në kornizë
Të dhënat e regjistruara të veçorive të fytyrës arrihen në bazën e të dhënave të fytyrave të ruajtura në Flash përmes pak file sistemi. Hapat për të shtuar mbështetjen e bazës së të dhënave të fytyrës përshkruhen më poshtë.
Shtoni drejtuesit për ruajtjen e Flash
Kopjoni drejtuesin e ndërfaqes Flash FlexSPI files fsl_flexspi.c dhe fsl_flexspi.h, dhe drejtuesi i enkriptimit të të dhënave files fsl_caam.c dhe fsl_caam.h nga shtegu SDK_2_13_0_MIMXRT1170-EVK\devices \MIMRX1176\drivers\ te dosja e drejtuesve të ishample SW.
Shto mbështetje në nivel bordi
- Shtoni përkufizimet e FlexSPI të përdorura për pajisjen Flash në bord në board.h:
- #define BOARD_FLEXSPI FLEXSPI1
- #define BOARD_FLEXSPI_CLOCK kCLOCK_FlexSpi1
- #define BOARD_FLEXSPI_AMBA_BASE FlexSPI1_AMBA_BASE
- Kopjoni operatorët dhe konfigurimet files të pajisjes Flash flexspi_nor_flash_ops.c, flexspi_nor_flash_ops.h, sln_flash_config.c, sln_flash_config_w25q256jvs.h, andsln_flash_ops.h nën shtegun e smartfonit HMI\coffe\cmfig7_maample SW.
- Hiq zgjedhjen "Përjashtoni burimin nga ndërtimi" në C/C++ Build > Settings pasi të keni klikuar me të djathtën në fileemrin dhe hapjen e Properties për t'i mundësuar ato të përfshihen në projekt.
- Ndryshoni kokën e përfshirë fileemërtoni sln_flash_config.h në sln_flash_config_w25q256jvs.h në sln_flash_config.c dhe flexspi_nor_flash_ops.h.
- Vendosni burimin e orës FlexSPI1 në file clock_config.c duke iu referuar aplikacionit të aparatit të kafesë.
Shtoni përshtatësin dhe mbështetjen e nivelit të mesëm
- Kopjoni files sln_flash.c, sln_flash.h, sln_encrypt.c dhe sln_encrypt.h si drejtues përshtatës për file sistemi dhe aplikacioni nga shtegu i smart HMI\coffee_machine\cm7\source\ deri te burimi i dosjes së ishample. Përditëso të renë files:
- Hiq zgjedhjen "Përjashtoni burimin nga ndërtimi" në to për ndërtim.
- Ndrysho të gjithë kokën e përfshirë file emri sln_flash_config.h në sln_flash_config_w25q256jvs.h.
- Kopjoni dosjen filesistemi që përmban API-të për të vegjëlit filesistemi dhe drejtuesi HAL nga smart HMI \makine_kafeje\cm7\burimi\ deri te ishample SW. Dhe përditësoni për dosjen e re:
- Hiq zgjedhjen "Përjashtoni burimin nga ndërtimi" në të për ndërtim.
- Shto shtegun e përfshirjes për të në cilësimet e projektit: “${workspace_loc:/${ProjName}/filesistem}”
- Ndryshoni kokën e përfshirë file emri sln_flash_config.h në sln_flash_config_w25q256jvs.h dhe fica_definition.h në app_config.h në file sln_flash_littlefs.h.
- Kopjoni dosjen littlefs që përmban pajisjen e mesme – pak filesistemi nga shtegu SDK_2_13_0_ MIMXRT1170-EVK\middleware\ në ishample SW. Dhe përditësoni dosjen e re:
- Hiq zgjedhjen "Përjashtoni burimin nga ndërtimi" në të për ndërtim.
- Shtoni shtegun e përfshirjes për të në cilësimet e projektit: "${workspace_loc:/${ProjName}/littlefs}"
Shtoni drejtuesit HAL
- Ka dy pajisje HAL - file sistemi dhe databaza e fytyrës HAL mbështetet për veçorinë e aksesit në bazën e të dhënave dhe ato tashmë janë implementuar në kornizë pa asnjë ndryshim. Aktivizojini ato duke shtuar përkufizimet e mëposhtme në board_define.h:
- #define ENABLE_FLASH_DEV_Littlefs
- #define ENABLE_FACEDB
Dhe ndryshoni emrin e bazës së të dhënave të fytyrës për ishample: #define OASIS_FACE_DB_DIR "oasis_gui_face_rec"
Shto mbështetje në nivel aplikacioni
- Përditësoni kryesoren file lvgl_gui_face_rec_cm7.cpp:
- Përfshi kokën file lidhur me Flash-in file menaxheri i sistemit HAL duke shtuar rreshtin e kodit: #include "fwk_flash.h"
- Deklaroni dhe regjistrohuni file pajisja HAL e sistemit:
- HAL_FLASH_DEV_DECLARE(Littlefs);
- HAL_FLASH_DEV_REGISTER (Littlefs, ret);
Shënim: The file Sistemi HAL duhet të regjistrohet përpara se të gjithë menaxherët e pajisjes të inicializohen në funksionin APP_InitFramework().
- Thirrni funksionin BOARD_ConfigMPU() në APP_BoardInit() për të konfiguruar MPU.
- Vendosni file caktimi i sistemit në Flash në file app_config.h duke përcaktuar përkufizimet makro të përdorura në file sln_flash_littlefs.h:
- #define FICA_IMG_FILE_SYS_ADDR (FLASH_IMG_SIZE + RES_SHMEM_TOTAL_SIZE)
- #define FICA_FILE_SYS_SIZE (0x280000)
Konfigurimet
Disa kode të lidhura me Flash-in ekzekutohen në zonën SRAM ITC për performancë të mjaftueshme. Kopjoni skriptet e lidhjeve të dosjeve që përmbajnë konfigurimin e lidhësit nga shtegu smart HMI\coffee_machine\cm7\ në ishample SW.
Zbatoni një aplikacion GUI LVGL
Zhvillimi i një aplikacioni GUI LVGL bazuar në kornizë thërret API-të nga UI dalëse HAL dhe siguron API-të për të nxjerrë UI HAL (Shih seksionin 4.1.3 për zbatimin e UI HAL dalëse).
Megjithatë, zbatimi i detajuar i një aplikacioni GUI LVGL varet nga kërkesat dhe dizajni i aplikacionit. Aplikacioni GUI në këtë ishample është projektuar siç përshkruhet në fillim të seksionit 4.
Më poshtë janë prezantimet e zbatimit:
- Kodet e personalizuara zbatohen në custom.c dhe custom.h të dhëna nga GUI Guider si ndërfaqe ndërmjet projektit GUI Guider dhe projektit të sistemit të integruar.
- Shtoni funksionet e reja të quajtura gui_xxx() në custom.c për të arritur funksionet e mëposhtme:
- Për UI dalëse HAL dhe aplikacionin GUI për të përditësuar UI.
- Që aplikacioni GUI të aktivizojë ngjarje duke thirrur funksionet e kthimit të thirrjes së ndërfaqes së përdoruesit nga UI HAL dalëse.
Për shembullampPër më tepër, funksioni i ri gui_event_face_rec_action() thërret funksionet e kthimit të UI për të trajtuar një nga ngjarjet e regjistrimit të fytyrës, njohjes së fytyrës dhe fshirjes së përdoruesit të aktivizuar nga aplikacioni GUI kur klikohet butoni përkatës.
Shënim: Funksioni gui_set_virtual_face() thirri në dalje UI HAL për paraview modaliteti duhet të zbatohet në custom.c:
- Klononi funksionin gui_set_virtual_face() nga smart HMI\coffee_machine\cm4\custom \custom.c.
- Ndrysho emrin e miniaplikacionit home_img_cameraPreview te screen_img_camera_preview në funksion.
- Zbatoni funksionet e kthimit të thirrjes së UI me të njëjtin prototip për të gjitha ato në dalje UI HAL nën kontrollin e përkufizimit makro #ifndef RT_PLATFORM në custom.c për të qenë në përputhje me projektin GUI Guider sepse këto funksione në UI dalëse HAL varen nga platformë e ngulitur. Në custom.c, ato varen nga simulatori në udhëzuesin GUI dhe janë të pavarura nga platforma e integruar. Për shembullample, kthimi i thirrjes së regjistrimit të fytyrës zbatohet si më poshtë për simulatorin GUI Guider që funksionon: #ifndef RT_PLATFORM void UI_Registration_Callback() { gui_hide_del_user_btn(true); s_Inveprim = false; kthimi; }
Shënim: Referojuni të njëjtit prototip të funksionit të paraqitur në hapin 6 të seksionit 4.1.3
Përkufizimi makro RT_PLATFORM është vendosur në cilësimet e projektit të MCUXpresso siç tregohet në Figurën 7: - Deklaroni të gjitha funksionet me emrin UI_xxx_Callback() dhe gui_xxx() në custom.h dhe shtoni custom.h të përfshira në smart_tlhmi_event_descriptor.h për të ndarë API-të e GUI-ve në daljen e ndërfaqes së përdoruesit HAL.
- Shtoni funksionet e reja të quajtura gui_xxx() në custom.c për të arritur funksionet e mëposhtme:
- Zhvilloni GUI-në në Udhëzuesin GUI:
- Klononi kamerën e dosjes paraview që përmban softuerin e projektit GUI Guider në dosjen gui_guider në paketën bazë të softuerit lvgl_gui_camera_preview_cm7. Ndryshoni emrin përkatës camera_preview te face_rec per ish-in e riample.
- Kopjoni custom.c dhe custom.c të përditësuar më sipër. h në softuerin e ri të projektit GUI Guider.
- Hapni projektin e ri face_rec në GUI Guider. Përditësoni si më poshtë:
- Shtoni butonin e ri të emërtuar Fshi përdoruesin. Shtoni flamurin Hidden në të në mënyrë që butoni të fshihet kur të fillojë aplikacioni GUI.
- Shtoni linjën e kodit të thirrjes së API gui_event_face_rec_action() me parametër të ndryshëm të ID-së së ngjarjes në aktivizimin "Released" në Cilësimet e ngjarjeve të të gjithë butonave Regjistrim, Njohje dhe Fshi përdoruesin për aktivizimin e ngjarjeve të regjistrimit të fytyrës, njohjes së fytyrës dhe fshirjes së përdoruesit. Figura 8 tregon kodin për ngjarjen e butonit Regjistrim:
- Përditësoni kodin e krijuar nga GUI Guider në projektin MCUXpresso.
- Zëvendësoni përmbajtjen me përjashtim të imazheve të dosjeve në dosjen e krijuar të projektit MCUXpresso SW me ato përkatëse në dosjen e krijuar të projektit GUI Guider SW.
Shënim: Për më shumë detaje në lidhje me modifikimet e paraqitura më sipër, kontrolloni shembullinample software në https://mcuxpresso.nxp.com/appcodehub.
Verifikimet me ishample projekt
Për të marrë ishamppaketën e softuerit që përmban burimet dhe mjetet për këtë shënim aplikacioni, vizitoni: https://mcuxpresso.nxp.com/appcodehub. Hapni ish-inampprojekti në MCUXpresso IDE. Ndërtoni dhe programoni .axf file në adresën 0x30000000 dhe programoni koshin e burimeve file kamera_paraview_resource.bin në adresën 0x30800000.
Njohja e fytyrës LVGL GUI p.shample funksionon normalisht si më poshtë:
- Paraview: Me ndezjen, transmetimet video të kapura nga kamera shfaqen në zonën specifike të kamerës paraview në ekranin GUI. Etiketa e statusit shfaq “Paraview…”. Për detaje, shihni figurën 3. Butoni Fshi përdoruesin është i fshehur. Kur klikoni zonën jashtë butonave dhe imazheve, ai tregon paraview deklaroni si më sipër pasi të përfundojë veprimi i regjistrimit ose njohjes së fytyrës.
- Regjistrimi:
- tartup: Kur klikohet butoni Regjistrimi, fillon regjistrimi i fytyrës. Etiketa e statusit ndryshon për të shfaqur "Regjistrimi...", drejtkëndëshi udhëzues i fytyrës shfaqet blu dhe shiriti i përparimit fillon të tregojë përparimin. Sigurohuni që fytyra e përdoruesit të shfaqet në drejtkëndëshin udhëzues të fytyrës blu për regjistrim.
- sukses: Etiketa e statusit tregon “Regjistrim…OK” dhe numrin e ID të përdoruesit të regjistruar, drejtkëndëshi udhëzues i fytyrës bëhet i kuq nëse regjistrimi i fytyrës është i suksesshëm përpara se progresi të shfaqet i plotë në shirit.
- Dështimi -> Koha e skadimit: Etiketa e statusit tregon "Regjistrimi… Koha e mbarimit" nëse regjistrimi i fytyrës është ende i dështuar kur progresi shfaqet i plotë në shirit.
- Dështim -> Dyfishim: Etiketa e statusit tregon "Regjistrimi… Dështoi", drejtkëndëshi udhëzues i fytyrës bëhet i gjelbër nëse fytyra e regjistruar njihet përpara se progresi të shfaqet i plotë në shirit.
- njohje:
- Fillimi: Kur klikohet butoni i Njohjes, fillon njohja e fytyrës. Etiketa e statusit ndryshon për të shfaqur "Njohja...", drejtkëndëshi udhëzues i fytyrës shfaqet blu dhe shiriti i përparimit fillon të tregojë përparimin. Sigurohuni që fytyra e përdoruesit të shfaqet në drejtkëndëshin udhëzues të fytyrës blu për regjistrim.
- sukses: Etiketa e statusit tregon "Njohja...OK" dhe numrin e njohur të ID-së së përdoruesit, drejtkëndëshi udhëzues i fytyrës bëhet i gjelbër nëse njohja e fytyrës është e suksesshme përpara se përparimi të shfaqet i plotë në shirit. Në këtë pikë, shfaqet butoni Fshi përdoruesin. Do të thotë që përdoruesi lejohet të fshihet vetëm kur njihet.
- ailure: Etiketa e statusit tregon "Njohja...Përfundon koha" nëse njohja e fytyrës është ende e dështuar kur progresi shfaqet i plotë në shirit.
- Fshi përdoruesin: Kur klikohet butoni "Fshi përdoruesin", pasi njohja e fytyrës të jetë e suksesshme, etiketa e statusit ndryshon për të shfaqur "Fshi përdoruesin…OK" me drejtkëndëshin udhëzues të fytyrës duke u bërë blu dhe përparimi shfaqet i plotë në shirit. Butoni Fshi përdoruesin fshihet përsëri. Fytyra/përdoruesi i njohur fshihet nga baza e të dhënave. Do të thotë që kjo fytyrë/përdorues nuk mund të njihet derisa të regjistrohet sërish.
Shënim për kodin burimor në dokument
ExampKodi le i treguar në këtë dokument ka të drejtën e autorit dhe licencën e mëposhtme BSD-3-Clause:
E drejta e autorit 2024 NXP Rishpërndarja dhe përdorimi në forma burimore dhe binare, me ose pa modifikim, lejohen me kusht që të plotësohen kushtet e mëposhtme:
- Rishpërndarja e kodit burimor duhet të ruajë njoftimin e mësipërm për të drejtën e autorit, këtë listë të kushteve dhe mohimin e mëposhtëm.
- Rishpërndarjet në formë binare duhet të riprodhojnë njoftimin e mësipërm për të drejtën e autorit, kjo listë e kushteve dhe mohimi i mëposhtëm në dokumentacion dhe/ose materiale të tjera duhet të sigurohen me shpërndarjen.
- As emri i mbajtësit të së drejtës së autorit dhe as emrat e kontribuesve të tij nuk mund të përdoren për të miratuar ose promovuar produkte që rrjedhin nga ky softuer pa leje specifike paraprake me shkrim
KY Softuer OFROHET NGA MBARTËT E TË DREJTAVE TË AUTORIT DHE KONTRIBUTORËT "SIÇ ËSHTË" DHE ÇDO GARANCI TË SHPREHUR APO TË LËNDËSUARA, PËRFSHIRË, POR JO KUFIZUAR NË, GARANCITË E NËNKUPTUARA TË GARANCIVE DHE AFTËSISË TË TREGTISË I MOSHUAR. NË ASNJË RAST MBARTËSI OSE KONTRIBUESIT TË TË DREJTËS SË AUTORIT DO TË JETË PËRGJEGJËS PËR ASNJË DËM TË DIREKT, INDIREKT, INCIDENTAL, TË VEÇANTË, SHEMBULL APO PASOJËS (përfshirë, POR JO TË KUFIZUARA TË KUFIZUARA, SHËRBIMET HUMBJA E PËRDORIMIT, TË TË DHËNAVE OSE FITIMET APO NDËRPRERJE TË BIZNESIT) SIDO TË SHKAKTUARA DHE PËR ÇDO TEORI PËRGJEGJËSORE, QESHTË NË KONTRATË, PËRGJEGJËSI TË RRETË, APO TË PËRFSHIRË TË TJERA; JASHTË PËRDORIMIT TË KËTIJ SOFTUER, EDHE NËSE KËSHILLOHET PËR MUNDËSINË E KËTË DËMIMI.
Historia e rishikimit
Informacion ligjor
Përkufizimet
Draft - Një status i draftit në një dokument tregon se përmbajtja është ende nën rishikim të brendshëmview dhe subjekt i miratimit zyrtar, i cili mund të rezultojë në modifikime ose shtesa. NXP Semiconductors nuk jep asnjë përfaqësim ose garanci për saktësinë ose plotësinë e informacionit të përfshirë në një version draft të një dokumenti dhe nuk ka asnjë përgjegjësi për pasojat e përdorimit të një informacioni të tillë.
Mohim përgjegjësie
- Garanci dhe përgjegjësi e kufizuar — Informacioni në këtë dokument besohet të jetë i saktë dhe i besueshëm. Megjithatë, NXP Semiconductors nuk jep asnjë përfaqësim ose garanci, të shprehur ose të nënkuptuar, në lidhje me saktësinë ose plotësinë e një informacioni të tillë dhe nuk do të ketë asnjë përgjegjësi për pasojat e përdorimit të këtij informacioni. NXP Semiconductors nuk mban asnjë përgjegjësi për përmbajtjen në këtë dokument nëse ofrohet nga një burim informacioni jashtë NXP Semiconductors.
Në asnjë rast, gjysmëpërçuesit NXP nuk do të jenë përgjegjës për ndonjë dëm të tërthortë, të rastësishëm, ndëshkues, të veçantë ose pasues (përfshirë – pa kufizim – fitimet e humbura, kursimet e humbura, ndërprerjen e biznesit, kostot që lidhen me heqjen ose zëvendësimin e ndonjë produkti ose tarifat e ripërpunimit) pavarësisht nëse ose jo, këto dëme bazohen në dëmshpërblim (përfshirë neglizhencën), garanci, shkelje të kontratës ose ndonjë teori tjetër ligjore.
Pavarësisht nga dëmtimet që mund të pësojë klienti për çfarëdo arsye, përgjegjësia totale dhe kumulative e NXP Semiconductors ndaj klientit për produktet e përshkruara këtu do të kufizohet në përputhje me Termat dhe kushtet e shitjes komerciale të NXP Semiconductors. - E drejta për të bërë ndryshime — NXP Semiconductors rezervon të drejtën të bëjë ndryshime në informacionin e publikuar në këtë dokument, duke përfshirë pa kufizim specifikimet dhe përshkrimet e produktit, në çdo kohë dhe pa paralajmërim. Ky dokument zëvendëson dhe zëvendëson të gjithë informacionin e dhënë përpara publikimit të tij.
- Përshtatshmëria për përdorim — Produktet NXP Semiconductors nuk janë të dizajnuara, të autorizuara ose të garantuara për t'u përdorur në mbështetje të jetës, sisteme ose pajisje kritike për jetën ose sigurinë, as në aplikime ku dështimi ose mosfunksionimi i një produkti NXP Semiconductors mund të pritet në mënyrë të arsyeshme të rezultojë në lëndime personale, vdekje ose dëmtime të rënda pronësore ose mjedisore. NXP Semiconductors dhe furnitorët e tij nuk pranojnë asnjë përgjegjësi për përfshirjen dhe/ose përdorimin e produkteve NXP Semiconductors në pajisje ose aplikacione të tilla dhe për këtë arsye përfshirja dhe/ose përdorimi i tillë është në rrezikun e klientit.
- Aplikacionet — Aplikacionet që përshkruhen këtu për cilindo nga këto produkte janë vetëm për qëllime ilustruese. NXP Semiconductors nuk jep asnjë përfaqësim ose garanci se aplikacione të tilla do të jenë të përshtatshme për përdorimin e specifikuar pa testime ose modifikime të mëtejshme.
Klientët janë përgjegjës për projektimin dhe funksionimin e aplikacioneve dhe produkteve të tyre duke përdorur produktet NXP Semiconductors dhe NXP Semiconductors nuk pranon asnjë përgjegjësi për asnjë ndihmë me aplikacionet ose dizajnimin e produktit të klientit. Është përgjegjësi e vetme e klientit të përcaktojë nëse produkti NXP Semiconductors është i përshtatshëm dhe i përshtatshëm për aplikacionet e klientit dhe produktet e planifikuara, si dhe për aplikimin dhe përdorimin e planifikuar të klientëve të palëve të treta të klientit. Konsumatorët duhet të ofrojnë masa mbrojtëse të përshtatshme për dizajnin dhe funksionimin për të minimizuar rreziqet që lidhen me aplikacionet dhe produktet e tyre. NXP Semiconductors nuk pranon asnjë përgjegjësi në lidhje me ndonjë parazgjedhje, dëmtim, kosto ose problem që bazohet në ndonjë dobësi ose parazgjedhje në aplikacionet ose produktet e klientit, ose aplikacionin ose përdorimin nga klientët e palës së tretë të klientit. Klienti është përgjegjës për kryerjen e të gjitha testeve të nevojshme për aplikacionet dhe produktet e klientit duke përdorur produktet NXP Semiconductors në mënyrë që të shmanget një parazgjedhje e aplikacioneve dhe produkteve ose e aplikacionit ose përdorimi nga klientët e palës së tretë të klientit. NXP nuk pranon asnjë përgjegjësi në këtë drejtim. - Kushtet e shitjes komerciale — Produktet NXP Semiconductors shiten duke iu nënshtruar kushteve dhe kushteve të përgjithshme të shitjes komerciale, të publikuara në https://www.nxp.com/profile/kushtet, përveç nëse është rënë dakord ndryshe në një marrëveshje të vlefshme individuale me shkrim. Në rast të lidhjes së një marrëveshjeje individuale do të zbatohen vetëm termat dhe kushtet e marrëveshjes përkatëse. NXP Semiconductors shprehimisht kundërshton zbatimin e termave dhe kushteve të përgjithshme të klientit në lidhje me blerjen e produkteve të NXP Semiconductors nga klienti.
- Kontrolli i eksportit — Ky dokument, si dhe artikulli(et) e përshkruar këtu mund t'i nënshtrohen rregulloreve të kontrollit të eksportit. Eksporti mund të kërkojë një autorizim paraprak nga autoritetet kompetente.
- Përshtatshmëria për përdorim në produkte jo të kualifikuara automobilistike — Përveç nëse ky dokument thotë shprehimisht se ky produkt specifik NXP Semiconductors është i kualifikuar për automobila, produkti nuk është i përshtatshëm për përdorim në automobil. Nuk është as i kualifikuar dhe as i testuar në përputhje me kërkesat e testimit të automobilave ose aplikimit. NXP Semiconductors nuk pranon asnjë përgjegjësi për përfshirjen dhe/ose përdorimin e produkteve jo të kualifikuara për automobila në pajisjet ose aplikacionet e automobilave.
Në rast se klienti përdor produktin për dizajnim dhe përdorim në aplikacionet e automobilave sipas specifikimeve dhe standardeve të automobilave, klienti (a) do të përdorë produktin pa garancinë e produktit nga NXP Semiconductors për aplikime, përdorim dhe specifikime të tilla automobilistike, dhe (a) b) sa herë që klienti përdor produktin për aplikime automobilistike përtej specifikimeve të NXP Semiconductors, ky përdorim do të jetë vetëm në rrezik të klientit dhe (c) klienti dëmshpërblen plotësisht NXP Semiconductors për çdo përgjegjësi, dëmtim ose pretendim të dështuar të produktit që rezulton nga dizajni i klientit dhe përdorimi i produkti për aplikimet e automobilave përtej garancisë standarde të NXP Semiconductors dhe specifikimeve të produktit të NXP Semiconductors. - Përkthime — Një version jo-anglisht (i përkthyer) i një dokumenti, duke përfshirë informacionin ligjor në atë dokument, është vetëm për referencë. Versioni në anglisht do të mbizotërojë në rast të ndonjë mospërputhjeje midis versionit të përkthyer dhe atij në anglisht.
- Siguria — Klienti e kupton që të gjitha produktet NXP mund t'i nënshtrohen dobësive të paidentifikuara ose mund të mbështesin standardet ose specifikimet e vendosura të sigurisë me kufizime të njohura. Klienti është përgjegjës për projektimin dhe funksionimin e aplikacioneve dhe produkteve të tij gjatë gjithë ciklit të tyre jetësor për të reduktuar efektin e këtyre dobësive në aplikacionet dhe produktet e klientit. Përgjegjësia e klientit shtrihet edhe në teknologji të tjera të hapura dhe/ose të pronarit të mbështetura nga produktet NXP për përdorim në aplikacionet e klientit. NXP nuk pranon asnjë përgjegjësi për ndonjë cenueshmëri. Klienti duhet të kontrollojë rregullisht përditësimet e sigurisë nga NXP dhe të ndjekë siç duhet. Klienti duhet të zgjedhë produkte me karakteristika sigurie që plotësojnë më së miri rregullat, rregulloret dhe standardet e aplikacionit të synuar dhe të marrë vendimet përfundimtare të projektimit në lidhje me produktet e tij dhe është i vetëm përgjegjës për pajtueshmërinë me të gjitha kërkesat ligjore, rregullatore dhe të sigurisë në lidhje me produktet e tij, pavarësisht për çdo informacion ose mbështetje që mund të ofrohet nga NXP.
NXP ka një ekip të reagimit ndaj incidentit të sigurisë së produktit (PSIRT) (i arritshëm në PSIRT@nxp.com) që menaxhon hetimin, raportimin dhe lëshimin e zgjidhjeve për dobësitë e sigurisë të produkteve NXP.
NXP B.V. — NXP B.V. nuk është një kompani operuese dhe nuk shpërndan apo shet produkte.
Markat tregtare
Njoftim: Të gjitha markat e referuara, emrat e produkteve, emrat e shërbimeve dhe markat tregtare janë pronë e pronarëve të tyre përkatës.
NXP — marka dhe logoja janë marka tregtare të 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 — janë marka tregtare dhe/ose marka të regjistruara të Arm Limited (ose filialeve ose filialeve të saj) në SHBA dhe/ose gjetkë. Teknologjia përkatëse mund të mbrohet nga ndonjë ose të gjitha patentat, të drejtat e autorit, dizajnet dhe sekretet tregtare. Të gjitha të drejtat e rezervuara.
- i.MX - është një markë tregtare e NXP BV
- J-Link — është një markë tregtare e SEGGER Microcontroller GmbH.
Microsoft, Azure dhe ThreadX — janë marka tregtare të grupit të kompanive Microsoft.
Ju lutemi, kini parasysh se njoftime të rëndësishme në lidhje me këtë dokument dhe produktin(ët) e përshkruar këtu, janë përfshirë në seksionin "Informacion ligjor".
© 2024 NXP BV
Për më shumë informacion, ju lutemi vizitoni: https://www.nxp.com
- Data e lëshimit: 19 prill 2024
- Identifikuesi i dokumentit: AN14263
FAQ
Pyetje: Cili është qëllimi kryesor i këtij produkti?
Përgjigje: Qëllimi kryesor është të mundësojë funksionin e njohjes së fytyrës duke përdorur një model algoritmi vizioni AI&ML me një GUI të thjeshtë LVGL example në tabelën SLN-TLHMI-IOT.
Pyetje: Si mund të përfitojnë zhvilluesit nga ky shënim aplikacioni?
Përgjigje: Zhvilluesit mund të mësojnë se si të zbatojnë njohjen e fytyrës në kornizë hap pas hapi duke përdorur shembullin e dhënëampLe dhe kuptoni menaxherët e pajisjeve, pajisjet HAL dhe mekanizmat e ngjarjeve të përfshira.
Dokumentet / Burimet
![]() |
NXP AN14263 Zbatoni njohjen e fytyrës LVGL GUI në Framewor [pdfUdhëzuesi i përdoruesit AN14263 Implementimi i Njohjes së Fytyrës LVGL GUI në Framewor, AN14263, Implementimi i Njohjes së Fytyrës LVGL GUI në Framewor, LVGL GUI Face Njohja në Framewor, Njohja e fytyrës në Framewor, Njohja në Framewor |