NXP AN14263 Implementeu el reconeixement facial de la GUI LVGL a Framewor
Informació del producte
Especificacions
- Nom del producte: Reconeixement facial LVGL GUI a Framework
- Revisió del document: 1-19 d'abril de 2024
- Paraules clau: Reconeixement facial, GUI LVGL, Framework
Instruccions d'ús del producte
- Acabatview
Aquest producte permet un model d'algorisme de visió AI&ML per al reconeixement facial en un marc per implementar la funció de reconeixement facial amb una senzilla GUI LVGL exampli a la placa SLN-TLHMI-IOT. - S'ha acabat el marcview
El programari de solució està dissenyat al voltant de l'arquitectura del marc que inclou gestors de dispositius responsables de la gestió de dispositius, dispositius HAL per abstraure els detalls subjacents i esdeveniments per a la comunicació entre diferents dispositius. - Característiques
El producte permet la implementació de la funció de reconeixement facial mitjançant la càmera prèviaview a la pantalla GUI amb botons per activar el registre, el reconeixement i l'eliminació de cares. Les dades de la cara registrada s'emmagatzemen a Flash mitjançant a file sistema. - Contingut de la nota de l'aplicació
La nota de l'aplicació presenta una pantalla GUI LVGL amb càmera prèviaview i botons per a accions relacionades amb la cara. Ajuda els desenvolupadors a entendre el marc i com implementar el reconeixement facial mitjançant l'example.
Acabatview
NXP ha llançat un kit de desenvolupament de solucions anomenat SLN-TLHMI-IOT que se centra en aplicacions HMI intel·ligents. Permet una HMI intel·ligent amb visió ML, veu i interfície d'usuari gràfica implementada en una MCU NXP i.MX RT117H. Basat en l'SDK, el programari de solució es construeix sobre un disseny anomenat framework que admet dissenys flexibles i personalització de funcions de visió i veu. Per ajudar els usuaris a utilitzar millor la plataforma de programari, es proporcionen alguns documents bàsics, per exempleample, la guia d'usuari de desenvolupament de programari. La guia presenta el disseny bàsic del programari i l'arquitectura de les aplicacions que cobreixen tots els components de la solució, inclòs el marc, per ajudar els desenvolupadors a implementar les seves aplicacions amb més facilitat i eficàcia mitjançant SLN-TLHMI-IOT.
Per obtenir més detalls sobre la solució i els documents rellevants, visiteu el web pàgina de la solució NXP EdgeReady Smart HMI basada en i.MX RT117H amb ML Vision, Voice i Interfície d'usuari gràfica. Tanmateix, encara no és tan fàcil per als desenvolupadors implementar les seves aplicacions HMI intel·ligents fent referència a aquestes guies bàsiques. Es preveu una sèrie de notes d'aplicació per ajudar a estudiar el desenvolupament del marc pas a pas. Aquesta nota d'aplicació es basa en Implement LVGL GUI Camera Preview sobre Framework (document AN14147). Aquesta nota d'aplicació descriu com habilitar el model d'algorisme de visió AI&ML per al reconeixement facial al marc per implementar la funció de reconeixement facial mitjançant la càmera prèvia.view a la pantalla GUI amb una GUI simple de LVGL exampli a la placa SLN-TLHMI-IOT. A la nota de sol·licitud, l'example presenta una pantalla GUI LVGL amb una càmera preview i alguns botons per activar el registre, el reconeixement i l'eliminació de cares. Les dades de la cara registrada s'emmagatzemen a Flash mitjançant una mica file sistema.
A un alt nivell, la nota d'aplicació conté el contingut següent:
- Activa la funció de reconeixement facial al marc.
- Afegiu suport de base de dades facial al marc mitjançant file sistema a Flash.
- Implementeu l'aplicació LVGL GUI. A través de les introduccions anteriors, aquest document ajuda els desenvolupadors a:
- Comprendre el marc i el programari de solució HMI intel·ligent amb més profunditat.
- Desenvolupeu el seu reconeixement facial AI&ML al marc amb l'aplicació LVGL GUI.
S'ha acabat el marcview
El programari de solució està dissenyat principalment per l'ús de l'arquitectura del marc que es compon de diverses parts diferents:
- Gestors de dispositius: la part principal
- Dispositius de capa d'abstracció de maquinari (HAL).
- Missatges/Esdeveniments
Com es mostra a la figura 1, el mésview del mecanisme del marc és:
Els gestors de dispositius són els responsables de gestionar els dispositius utilitzats pel sistema. Cada tipus de dispositiu (entrada, sortida, etc.) té el seu propi gestor de dispositiu específic. Amb un gestor de dispositius que comença després que els dispositius s'hagin registrat, espera i comprova un missatge per transferir dades als dispositius i a altres gestors després d'inicialitzar i iniciar els dispositius registrats. Els dispositius HAL estan escrits a la part superior del codi del controlador de nivell inferior, ajudant a augmentar la comprensió del codi abstraint molts dels detalls subjacents.
Els esdeveniments són un mitjà pel qual la informació es comunica entre diferents dispositius a través dels seus gestors. Quan s'activa un esdeveniment, el dispositiu que primer va rebre l'esdeveniment comunica aquest esdeveniment al seu gestor i, al seu torn, notifica a altres gestors designats per rebre l'esdeveniment.
El disseny arquitectònic del marc es va centrar en tres objectius principals:
- Facilitat d'ús
- Flexibilitat/Portabilitat
- Rendiment
El marc està dissenyat amb l'objectiu d'accelerar el temps de comercialització de la visió i altres aplicacions d'aprenentatge automàtic. Per garantir un ràpid temps de comercialització, és fonamental que el programari en si sigui fàcil d'entendre i modificar. Tenint en compte aquest objectiu, l'arquitectura del marc és fàcil de modificar sense ser restrictiva i sense suposar el cost del rendiment.
Per obtenir més detalls sobre el marc, consulteu la Guia d'usuari de desenvolupament de programari Smart HMI (document MCU-SMHMI-SDUG).
Biblioteca de gràfics lleugers i versàtils (LVGL)
LVGL (Light and Versatile Graphics Library) és una biblioteca de gràfics gratuïta i de codi obert que ofereix tot el que necessiteu per crear una GUI incrustada amb elements gràfics fàcils d'utilitzar, efectes visuals bonics i poca empremta de memòria.
Guia GUI
GUI Guider és una eina de desenvolupament d'interfície gràfica d'usuari fàcil d'utilitzar de NXP que permet un desenvolupament ràpid de pantalles d'alta qualitat amb la biblioteca de gràfics LVGL de codi obert. L'editor d'arrossegar i deixar anar de GUI Guider facilita l'ús de moltes funcions de LVGL com ara ginys, animacions i estils per crear una GUI amb una codificació mínima o sense codificació.
Amb el clic d'un botó, podeu executar la vostra aplicació en un entorn simulat o exportar-la a un projecte de destinació. El codi generat des de GUI Guider es pot afegir fàcilment al vostre projecte, accelerant el procés de desenvolupament i que us permet afegir sense problemes una interfície d'usuari incrustada a la vostra aplicació. GUI Guider és d'ús gratuït amb els MCU de propòsit general i crossover de NXP i inclou plantilles de projecte integrades per a diverses plataformes compatibles. Per obtenir més informació sobre el desenvolupament de LVGL i GUI a GUI Guider, consulteu Light and Versatile Graphics Library i GUI Guider.
Entorn de desenvolupament
Primer, prepareu i configureu l'entorn de maquinari i programari per implementar l'example sobre el marc.
Entorn de maquinari
L'entorn de maquinari està configurat per verificar l'exampLI:
- El kit de desenvolupament HMI intel·ligent basat en NXP i.MX RT117H (el kit SLN_TLHMI_IOT)
- SEGGER J-Link amb un adaptador Cortex-M de 9 pins i V7.84a o una versió més recent del controlador
entorn de programari
L'entorn de programari està configurat per desenvolupar l'exampLI:
- MCUXpresso IDE V11.7.0
- Guia GUI V1.6.1-GA
- lvgl_gui_camera_preview_cm7 – exampel codi de la segona aplicació nota com a programari base del desenvolupament. Per a més detalls, vegeu https://mcuxpresso.nxp.com/appcodehub.
- RT1170 SDK V2.13.0: com a recurs de codi per al desenvolupament.
- Programari SLN-TLHMI-IOT V1.1.2: codi font intel·ligent d'HMI publicat al repositori NXP GitHub com a recurs de codi per al desenvolupament. Per obtenir més informació, consulteu: GitHub – NXP/mcu-smhmi a v1.1.2
Per obtenir més informació sobre l'adquisició i la configuració de l'entorn de programari, vegeu: Introducció a l'SLN-TLHMI-IOT.
Visió de l'arquitectura sobre marc
L'arquitectura de visió del marc es mostra a la figura 2. L'algo de visió HAL (OASIS_HAL) té els següents processos:
- Feu el registre i el reconeixement facial mitjançant el model d'algoritme de visió AI&ML després de rebre els esdeveniments relacionats de la sortida UI HAL. Notifiqueu els resultats de la inferència del model d'algorisme a la sortida UI HAL.
- Accedeix (afegir, suprimir...) a la base de dades de característiques facials en funció del petit file sistema cridant a les API de FaceDB HAL després de rebre els esdeveniments relacionats de la sortida UI HAL.
- Sol·liciteu el fotograma de vídeo de la càmera a la càmera HAL quan feu el registre i el reconeixement facial.
Implementar el reconeixement facial al marc
El reconeixement facial LVGL GUI example (l'example es proporciona més endavant) sobre el marc s'implementa en funció de l'exampcodis de l'Implement LVGL GUI Camera Preview sobre Framework (document AN14147).
Per demostrar el reconeixement facial a l'example, la funció bàsica de l'aplicació GUI (vegeu la pantalla principal a la figura 3) està dissenyada tal com es descriu a continuació:
- L'aplicació GUI activa el registre de la cara o l'esdeveniment de reconeixement a la sortida HAL de la interfície d'usuari en fer clic al botó Registre o reconeixement. I la sortida UI HAL notifica l'esdeveniment d'afegir un usuari a l'algo de visió HAL després que el registre de la cara tingui èxit.
- L'aplicació GUI activa l'esdeveniment d'eliminació d'un usuari a la sortida UI HAL quan es fa clic al botó Suprimeix l'usuari després de reconèixer la cara de l'usuari.
- L'aplicació GUI activa l'esdeveniment d'aturar l'algo d'oasis que s'executa a la sortida UI HAL quan es fa clic a la pantalla fora dels botons i imatges.
Preparar el paquet de programari per a la implementació de l'example.
- Clonar el programari base lvgl_gui_camera_preview_cm7. Canvia el nom del projecte i el principal filenom a lvgl_gui_face_rec_cm7.
- El marc s'ha d'actualitzar al programari, ja que els codis font del nucli del marc han començat a ser públics a GitHub a partir de la versió 1.1.2.
- Substituïu la carpeta del marc per la còpia de la V1.1.2 de GitHub, excepte per a files fwk_log.h i fwk_common.h sota inc\, ja que s'han modificat per a la sèrie de notes d'aplicació. Les operacions es mostren a la figura 4:
- Suprimiu la carpeta framework_cm7 del grup libs i elimineu la biblioteca framework_cm7 i el seu camí de cerca configurat a Projecte > Propietats > Construcció C/C++ > Configuració > Configuració de l'eina > Enllaçador C++ MCU > Biblioteques, ja que es proporciona el codi font del nucli.
Activa la funció de reconeixement facial al framework
La funció de reconeixement facial es basa en el model d'algorisme de visió ML proporcionat com a biblioteca estàtica: una biblioteca d'execució oasis lite per NXP. La biblioteca és una biblioteca d'IA petita, molt eficient, personalitzada i optimitzada. El model inclou detecció de cares, reconeixement facial, detecció de vidres i detecció de vivacitat. Proporciona principalment l'API OASISLT_run_extended() per executar la canalització de reconeixement facial mentre s'actualitza els resultats a la persona que truca mitjançant devolucions de trucada d'esdeveniments, i afegir/actualitzar/suprimir cares a la base de dades mitjançant les devolucions de trucada de la base de dades de cares després d'especificar la informació del marc d'origen, les devolucions de trucada i la memòria. pool utilitzat per la biblioteca cridant a una altra API OASISLT_init() en la inicialització. La crida de les API i les funcions de devolució de trucada s'implementen a l'algo de visió HAL del framework.
Afegeix la biblioteca de models de vision algo
- Copieu la carpeta oasis que conté la biblioteca i la capçalera relacionada file des de smart HMI\coffee_machine\cm7\libs\ a la carpeta libs de l'exampel SW.
- Afegiu el camí de cerca de la capçalera file a Projecte > Propietats > Construcció C/C++ > Configuració > Configuració de l'eina > Compilador MCU C > Inclou i compilador MCU C++ > Inclou: "${workspace_loc:/${ProjName}/libs/oasis/include}"
- Afegiu la lib i el seu camí de cerca a Projecte > Propietats > Construcció C/C++ > Configuració > MCU C+ + Enllaçador > Biblioteques: liboasis_lite2D_DEFAULT_117f_ae.a "${workspace_loc:/${ProjName}/libs/oasis}" i la definició de macro a habiliteu la funció a Projecte > Propietats > Construcció C/C++ > Configuració > Configuració de l'eina > Compilador MCU C > Preprocessador i compilador MCU C++ > Preprocessador: SMART_TLHMI_2D
Habilita l'algoritme de visió HAL
L'algo de visió HAL fa que el model d'algo de visió funcioni i respon els resultats a la sortida de la IU HAL després de rebre'n els esdeveniments.
Per activar-ho, cloneu el controlador HAL similar existent file on s'implementen les funcions següents:
- Implementeu les devolucions de trucada de les operacions de la base de dades facial i la gestió d'esdeveniments.
- Feu que l'algo de visió funcioni trucant a les API de la biblioteca oasis.
- Accediu a la base de dades de la cara de l'usuari i a la base de dades d'aplicacions (no és necessari a l'example).
- Rebeu esdeveniments i envieu resultats a la sortida de la UI HAL.
Les principals obres per implementar el HAL per a l'exampsón:
- Clonar el controlador HAL similar existent file i canviar els noms relacionats.
- Elimineu els codis relacionats amb les operacions de dades de l'aplicació.
- Actualitzeu les definicions i les funcions per gestionar els esdeveniments de la sortida UI HAL segons l'exampdisseny.
- Afegiu les configuracions necessàries a la inicialització d'oasis.
Els passos detallats són els següents:
- Clonar hal_vision_algo_oasis_coffeemachine.c. Canvia el filenom a hal_vision_algo_oasis_guifacerec.c. I substituïu totes les cadenes CoffeeMachine amb GUIFaceRec al file.
- Elimineu els codis que contenen la cadena coffeedb (no distingeix entre majúscules i minúscules) relacionat amb la base de dades de l'aplicació, per exempleample, #include hal_sln_coffeedb.h.
- Modifiqueu la funció HAL_VisionAlgoDev_OasisGUIFaceRec_InputNotify() per gestionar els esdeveniments des de la UI de sortida HAL.
- Canvieu la definició d'esdeveniment kEventFaceRecId_RegisterCoffeeSelection a kEventFaceRecId_RegisterUserFace i la cadena d'estructura regCoffeeSelection a regGUIFaceRec per al maneig d'esdeveniments per afegir noves dades de característiques facials a la base de dades.
- Mostrar el procés estàndard de les accions de reconeixement facial a l'example, modifiqueu el maneig en el cas de kEventFaceRecID_OasisSetState amb les definicions dels estats:
- kOASISLiteState
- Registre koASISLiteState
- Reconeixement koASISLiteState
- Parat
- Afegiu i modifiqueu les definicions dels esdeveniments esmentats al pas anterior.
- Copieu la capçalera file smart_tlhmi_event_descriptor.h des de smart HMI\coffee_machine\cm7\source\event_handlers\ a la carpeta font de l'exampel SW. Actualitza el file com a continuació:
- Canvieu la definició d'esdeveniment kEventFaceRecId_RegisterCoffeeSelection a kEventFaceRecId_RegisterUserFace al tipus d'enumeració _event_smart_tlhmi_id i la cadena d'estructura regCoffeeSelection a regGUIFaceRec a l'estructura _event_smart_tlhmi. Per tant, canvieu l'estructura register_coffee_selection_event_t per regCoffeeSelection a register_gui_facerec_event_t.
- Suprimeix la resta de continguts utilitzats per a l'aplicació de la màquina de cafè, per exempleample, la línia de codi sobre la veu: #include “hal_event_descriptor_voice.h”.
- Afegiu els tipus kOASISLiteState_Stopped i kOASISLiteState_Running al tipus d'enumeració oasis_lite_state_t a hal_vision_algo.h a framework>hal>vision al projecte de la següent manera:
typedef enumeració _oasis_lite_state {- kOASISLiteState
- Córrer, koASISLiteState
- Aturat, koASISLiteState
- reconeixement,
- kOASISLiteState
- Registre, koASISLiteState
- Desregistrament, koASISLiteState
- RemoteRegistration, kOASISLiteState
- Compte
- Utilitzeu l'estructura actualitzada anterior oasis_lite_state_t per refinar l'estructura oasis_state_event_t a hal_event_descriptor_face_rec.h sota framework>hal>vision al projecte de la següent manera: typedef struct _oasis_state_event_t { oasis_lite_state_t state; } oasis_state_event_t;
- Canvieu tots els kEventInfo_Remote a kEventInfo_Local per enviar esdeveniments des de l'algo visió HAL a altres HAL que s'executen al mateix nucli, ja que s'utilitza un nucli únic en lloc de dos nuclis a l'ex.ample.
- Afegiu i modifiqueu les configuracions següents per a la inicialització d'oasis a OASISLT_init():
- Afegiu les definicions de macro i les seccions de memòria per al fotograma de vídeo a board_define.h: #define OASIS_RGB_FRAME_WIDTH 800
- #definir OASIS_RGB_FRAME_HEIGHT 600
- #define OASIS_RGB_FRAME_SRC_FORMAT kPixelFormat_YUV1P444_RGB
- #definir OASIS_RGB_FRAME_BYTE_PER_PIXEL 3
- #define AT_FB_SHMEM_SECTION_ALIGN(var, alignbytes) \
- __atribut__((secció(“.bss.$fb_sh_mem,\”aw\”,%nobits @”))) var
- __atribut__((alineat(alignbytes)))
- Configureu l'assignació de memòria a la secció de memòria anterior fb_sh_mem a Projecte > Propietats > Construcció C/C++ > Configuració MCU que es mostra a la figura 5:
- Declara la variable global g_DTCOPBuf a lvgl_gui_face_rec_cm7.cpp: AT_NONCACHEABLE_SECTION_ALIGN_DTC (uint8_t g_DTCOPBuf[DTC_OPTIMIZE_BUFFER_SIZE], 4);
- Continueu afegint les definicions utilitzades a la variable anterior:
- Definiu la secció anterior a board_define.h:
- #define AT_NONCACHEABLE_SECTION_ALIGN_DTC(var, alignbytes) \
- atribut__((secció(“.bss.$SRAM_DTC_cm7,\”aw\”,%nobits @”))) var
- atribut__((alineat(alignbytes)))
- Incloeu la capçalera file hal_vision_algo.h que conté la definició de macro DTC_OPTIMIZE_BUFFER_SIZE a app_config.h inclosa a lvgl_gui_face_rec_cm7.cpp.
- Afegiu les definicions de macro i les seccions de memòria per al fotograma de vídeo a board_define.h: #define OASIS_RGB_FRAME_WIDTH 800
- Estableix la variable s_debugOption a true per mostrar l'estat del progrés en el reconeixement facial.
- Afegiu el camí de cerca de la capçalera files de la visió HAL a Projecte > Propietats > Construcció C/C++ > Configuració > Configuració de l'eina > Compilador MCU C > Inclou i compilador MCU C++ > Inclou: "${workspace_loc:/${ProjName}/framework/hal/vision}"
- Afegiu la definició següent per habilitar l'algo de visió HAL a board_define.h: #define ENABLE_VISIONALGO_DEV_Oasis_GUIFaceRec
Activa la sortida HAL de la IU
La sortida UI HAL notifica els esdeveniments a l'algo de visió HAL i respon als resultats de la inferència de l'algo de visió HAL. Amb l'aplicació GUI, els esdeveniments solen ser activats per l'aplicació i els resultats es mostren a l'aplicació.
Per activar-ho, cloneu el controlador HAL similar existent file on generalment s'implementen les funcions següents:
- Notificar els esdeveniments per al reconeixement facial i l'accés a la base de dades.
- Implementeu les devolucions de trucada per a l'aplicació GUI per activar els esdeveniments.
- Gestioneu els resultats de la inferència del mòdul d'algo de visió.
- Mostra el procés i els resultats de la gestió d'esdeveniments a la interfície d'usuari mitjançant la barra de progrés controlada amb els temporitzadors i el rectangle de guia de cara.
Les principals obres per implementar el HAL per a l'exampEls fitxers utilitzats en aquest document són:
- Clonar el controlador HAL similar existent file i canviar els noms relacionats.
- Elimina els codis relacionats amb l'aplicació.
- Actualitzeu les funcions per a la notificació d'esdeveniments i la resposta de resultats segons l'exampdisseny.
- Afegiu les devolucions de trucada per a l'aplicació GUI per activar els esdeveniments.
Els passos detallats són els següents:
- Clonar hal_output_ui_coffee_machine.c. Canvia el filenom a hal_ output_ui_guifacerec.c.
- Substituïu totes les cadenes CoffeeMachine amb GUIFaceRec al file.
- Elimina els codis relacionats amb l'aplicació: màquina de cafè.
- Elimineu les funcions WakeUp() i _StandBy() i els codis relacionats (pot cercar-les a la cadena wake_up i standby).
- Eliminar preview esdeveniments de mode que gestionen codis relacionats a HAL_OutputDev_UiGUIFaceRec_Input Notify().
- Elimineu les funcions UI_xxx_Callback() i els codis que contenen la cadena gui_ i la pantalla relacionades amb la GUI de la màquina de cafè excepte gui_set_virtual_face() per a la preview funció de mode.
- Elimineu tots els codis implicats amb les variables s_IsWaitingAnotherSelection i s_IsWaitingRegisterSelection relacionades amb l'aplicació de la màquina de cafè.
- Elimina els codis relacionats amb la veu, l'àudio i l'idioma. Per exampLI:
- #include “hal_voice_algo_asr_local.h”,
- #include "hal_event_descriptor_voice.h"
- Per a la notificació d'esdeveniments, implementeu les noves funcions _OutputManagerNotify(), _SetFaceRec(), _RegisterGUIFaceRec() i DeregisterGUIFaceRec() referides a les funcions _StopFaceRec(), _RegisterCoffeeSelection() i DeregisterCoffeeSelection() abans de deeSelection().
- El _OutputManagerNotify() implementa la funció bàsica de sortida d'esdeveniments per enviar un esdeveniment a l'algo de visió HAL. Les funcions següents l'anomenen per enviar els seus propis esdeveniments.
- El _SetFaceRec() envia l'esdeveniment kEventFaceRecID_OasisSetState per activar l'algo de visió per al registre de la cara, el reconeixement i aturar l'algo.
- El _RegisterGUIFaceRec() envia l'esdeveniment kEventFaceRecId_RegisterGUIFaceRec que es defineix a smart_tlhmi_event_descriptor.h per afegir dades de les característiques facials a la base de dades quan el registre estigui bé.
- El DeregisterGUIFaceRec() envia l'esdeveniment kEventFaceRecID_DelUser per eliminar les dades de les característiques facials de la base de dades en passar el reconeixement facial.
- Actualitzeu els codis per dur a terme les accions corresponents, inclosa actualitzar la GUI trucant a les API des de l'aplicació GUI de LVGL per obtenir els resultats d'inferència del registre i reconeixement facial a la funció _InferComplete_Vision() segons l'ex.ampel disseny. Per example, quan el registre facial té èxit,
- Deixeu de mostrar el progrés cridant a _FaceRecProcess_Stop();
- Atureu el registre de la cara trucant a _SetFaceRec(kOASISLiteState_Stopped);
- Mostra el resultat correcte a la GUI: gui_show_face_rec_result(kFaceRecResult_OK, s_UserId);
- Registreu les dades de la cara a la base de dades: _RegisterUserFace(s_UserId);
- Afegiu funcions de devolució de trucada de la IU per gestionar els esdeveniments: preview, registre facial, reconeixement i supressió d'usuari activat des de la GUI. Per example, la devolució de trucada de registre de cara: void UI_Registration_Callback(){ _SetFaceRec(kOASISLiteState_Registration); _FaceRecProcess_Start(); }
- I afegiu les funcions _FaceRecProcess_Start() i _FaceRecProcess_Stop() per mostrar el progrés i l'estat en els diferents esdeveniments i resultats.
- Actualitzeu la funció de retorn de trucada ISR del temporitzador _SessionTimer_Callback() per gestionar el cas de temps d'espera cridant a: gui_show_face_rec_result(kFaceRecResult_TimeOut, s_UserId);
- Afegiu les definicions següents per habilitar la sortida HAL de la IU a board_define.h: #define ENABLE_OUTPUT_DEV_UiGUIFaceRec
Avís:
Per presentar millor la funció de reconeixement facial, manteniu la funció per mostrar el procés i els resultats del reconeixement facial a la UI HAL de sortida. La funció es descriu a continuació
- El rectangle de la guia de cares es mostra de color blau i la barra de progrés mostra el progrés quan s'inicia el registre o el reconeixement de cares.
- El rectangle de la guia de la cara es mostra vermell quan el registre de la cara té èxit.
- El rectangle de la guia facial es mostra de color verd quan el reconeixement facial té èxit.
- El rectangle de la guia de la cara es manté en blau i la barra de progrés mostra el progrés total quan l'acció no té èxit després de l'expiració del temporitzador. En aquest moment, atura el registre o reconeixement facial.
La barra de progrés i el rectangle de guia facial es presenten com les icones integrades al binari de recursos file per ser programat a Flash. Els punters a les dades d'icones a SDRAM es configuren a la funció LoadIcons(APP_ICONS_BASE) cridada a la inicialització del dispositiu UI HAL de sortida a la sortida UI HAL. Ha d'implementar el suport d'icones per a la funció.
Implementar el suport d'icones
- Creeu el recurs combinant les icones amb les imatges utilitzades a l'aplicació LVGL GUI:
- Clona la capçalera de les quatre icones files process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h i virtual_face_red_420x426.h de l'HMI intel·ligent
\cafee machine\resource\icons\ a les icones de la carpeta nova sota la carpeta de recursos de l'exampel SW. - Afegiu el camí de cerca per a la icona quatre files a la càmera_preview_resource.txt file a la carpeta de recursos, per exempleample: icona ../resource/icons/process_bar_240x14.h
- Executeu camera_preview_resource_build.bat per crear els recursos d'imatges i icones per generar la paperera file càmera_preview_resource.bin i la informació file resource_information_table.txt (vegeu la figura 6).
- Clona la capçalera de les quatre icones files process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h i virtual_face_red_420x426.h de l'HMI intel·ligent
- Definiu l'adreça inicial a la SDRAM i la mida de les icones a app_config.h. L'adreça comença al costat de les imatges de l'aplicació GUI. La mida es genera a la informació file. #definir APP_ICONS_BASE (APP_RES_SHMEM_BASE + APP_LVGL_IMGS_SIZE) #definir APP_ICONS_SIZE 0x107c40
- Actualitzeu la mida assignada de la secció de memòria anomenada res_sh_mem a 0x200000 redefinint-la a app_config.h: #define RES_SHMEM_TOTAL_SIZE 0x200000 i la configuració corresponent a Projecte > Propietats > Construcció C/C++ > Configuració MCU.
- Afegiu la mida de la icona a la mida total del recurs carregat de Flash a SDRAM a la funció APP_LoadResource() a la funció principal file lvgl_gui_face_rec_cm7.cpp: memcpy((void *)APP_LVGL_IMGS_BASE, pLvglImages, APP_LVGL_IMGS_SIZE + APP_ICONS_SIZE);
Avís: Per completar la funció de reconeixement facial, es necessita el suport de l'aplicació LVGL GUI. L'aplicació LVGL GUI crida a les funcions de devolució de trucada de la UI a la sortida UI HAL per gestionar els esdeveniments des de la pantalla d'IU. D'altra banda, la UI de sortida HAL crida a les API des de l'aplicació LVGL GUI per actualitzar la IU per mostrar el resultat i l'estat. El desenvolupament de l'aplicació LVGL GUI és relativament independent i es presenta a la secció 4.3.
4.1.5 Inicieu dispositius i gestors HAL per al reconeixement facial
L'algo de visió habilitat HAL i la sortida de la interfície d'usuari HAL i els seus gestors s'inicien principalment file
lvgl_gui_face_rec_cm7.cpp seguint les conversions de desenvolupament al marc de la següent manera:
- Incloeu la capçalera file relacionat amb els dos gestors HAL afegint la línia de codi:
- #include " fwk_output_manager.h "
- #include “fwk_vision_algo_manager.h”
- Declarar els dispositius HAL:
- HAL_VALGO_DEV_DECLARE(OasisGUIFaceRec);
- HAL_OUTPUT_DEV_DECLARE(UiGUIFaceRec);
- Registreu els dispositius HAL:
- HAL_VALGO_DEV_REGISTER(OasisGUIFaceRec, ret);
- HAL_OUTPUT_DEV_REGISTER(UiGUIFaceRec, ret);
- Inicialitzar els gestors:
- FWK_MANAGER_INIT(VisionAlgoManager, ret);
- FWK_MANAGER_INIT(OutputManager, ret);
- Comença els gestors:
- FWK_MANAGER_START(VisionAlgoManager, VISION_ALGO_MANAGER_TASK_PRIORITY, ret);
- FWK_MANAGER_START(OutputManager, OUTPUT_MANAGER_TASK_PRIORITY, ret);
- Definiu la prioritat de les tasques del gestor:
- #define VISION_ALGO_MANAGER_TASK_PRIORITY 3
- #definir OUTPUT_MANAGER_TASK_PRIORITY 1
Afegiu suport de base de dades facial al framework
S'accedeix a les dades de les característiques facials registrades a la base de dades de la cara emmagatzemada a Flash mitjançant una mica file sistema. A continuació es descriuen els passos per afegir el suport de la base de dades facial.
Afegiu controladors per a l'emmagatzematge Flash
Copieu el controlador FlexSPI de la interfície Flash files fsl_flexspi.c i fsl_flexspi.h, i el controlador de xifratge de dades files fsl_caam.c i fsl_caam.h des del camí SDK_2_13_0_MIMXRT1170-EVK\devices\MIMRX1176\drivers\ a la carpeta de controladors de l'exampel SW.
Afegiu suport a nivell de tauler
- Afegiu les definicions de FlexSPI utilitzades per al dispositiu Flash a bord a board.h:
- #definir BOARD_FLEXSPI FLEXSPI1
- #define BOARD_FLEXSPI_CLOCK kCLOCK_FlexSpi1
- #definir BOARD_FLEXSPI_AMBA_BASE FlexSPI1_AMBA_BASE
- Copia els operadors i configuracions files del dispositiu Flash flexspi_nor_flash_ops.c, flexspi_nor_flash_ops.h, sln_flash_config.c, sln_flash_config_w25q256jvs.h i sln_flash_ops.h sota el camí de la carpeta smart HMI\coffee_machine\cm7\fig_source\cmXNUMX\fig.ampel SW.
- Desmarqueu "Exclou el recurs de la compilació" a Construcció C/C++> Configuració després de fer clic amb el botó dret al botó. files' i obrir les Propietats per permetre que s'incorporin al projecte.
- Canvia la capçalera inclosa fileanomena sln_flash_config.h a sln_flash_config_w25q256jvs.h a sln_flash_config.c i flexspi_nor_flash_ops.h.
- Configureu la font de rellotge FlexSPI1 al fitxer file clock_config.c que fa referència a l'aplicació de la màquina de cafè.
Afegiu adaptador i suport de nivell mitjà
- Copia el files sln_flash.c, sln_flash.h, sln_encrypt.c i sln_encrypt.h com a controladors d'adaptador per al file sistema i aplicació des del camí de l'HMI intel·ligent\maquina_cafè\cm7\source\ fins a la font de la carpeta de l'example. Actualitza el nou files:
- Desmarqueu "Exclou el recurs de la compilació" per a la creació.
- Canvia tota la capçalera inclosa file anomena sln_flash_config.h a sln_flash_config_w25q256jvs.h.
- Copia la carpeta filesistema que conté les API per als més petits filesistema i controlador HAL des de l'HMI intel·ligent \coffee_machine\cm7\source\ fins a l'exampel SW. I actualitzeu la carpeta nova:
- Desmarqueu "Exclou el recurs de la compilació" per a la creació.
- Afegiu-hi la ruta d'inclusió a la configuració del projecte: "${workspace_loc:/${ProjName}/filesistema}"
- Canvia la capçalera inclosa file nom sln_flash_config.h a sln_flash_config_w25q256jvs.h i fica_definition.h a app_config.h al file sln_flash_littlefs.h.
- Copieu la carpeta littlefs que conté la mercaderia mitjana - little filesistema des del camí SDK_2_13_0_ MIMXRT1170-EVK\middleware\ fins a l'exampel SW. I actualitzeu la nova carpeta:
- Desmarqueu "Exclou el recurs de la compilació" per a la creació.
- Afegiu-hi el camí d'inclusió a la configuració del projecte: "${workspace_loc:/${ProjName}/littlefs}"
Afegiu controladors HAL
- Hi ha dos dispositius HAL: file El sistema i la base de dades de cara HAL són compatibles amb la funció d'accés a la base de dades i ja estan implementats al marc sense cap canvi. Activeu-los afegint les definicions següents a board_define.h:
- #define ENABLE_FLASH_DEV_Littlefs
- #define ENABLE_FACEDB
I canvieu el nom de la base de dades de cares per a l'exampli: #definir OASIS_FACE_DB_DIR “oasis_gui_face_rec”
Afegiu suport a nivell d'aplicació
- Actualitza el principal file lvgl_gui_face_rec_cm7.cpp:
- Incloeu la capçalera file relacionat amb el Flash file gestor HAL del sistema afegint la línia de codi: #include "fwk_flash.h"
- Declarar i registrar file Dispositiu HAL del sistema:
- HAL_FLASH_DEV_DECLARE(Littlefs);
- HAL_FLASH_DEV_REGISTER(Littlefs, ret);
Nota: El file El dispositiu HAL del sistema s'ha de registrar abans que s'inicialitzin tots els gestors de dispositius a la funció APP_InitFramework().
- Truqueu a la funció BOARD_ConfigMPU() a APP_BoardInit() per configurar MPU.
- Estableix el file assignació del sistema a Flash al file app_config.h definint les definicions de macro utilitzades al fitxer file sln_flash_littlefs.h:
- #definir FICA_IMG_FILE_SYS_ADDR (FLASH_IMG_SIZE + RES_SHMEM_TOTAL_SIZE)
- #definir FICA_FILE_SYS_SIZE (0x280000)
Configuracions
Alguns codis relacionats amb Flash s'executen a l'àrea SRAM ITC per obtenir un rendiment suficient. Copieu els scripts d'enllaç de la carpeta que contenen les configuracions de l'enllaç des de la ruta smart HMI\coffee_machine\cm7\ a l'exampel SW.
Implementeu una aplicació GUI LVGL
El desenvolupament d'una aplicació GUI LVGL basada en un marc crida a les API de la sortida UI HAL i proporciona les API per a la sortida UI HAL (vegeu la secció 4.1.3 per a la implementació de la sortida UI HAL).
Tanmateix, la implementació detallada d'una aplicació GUI LVGL depèn dels requisits i el disseny de l'aplicació. L'aplicació GUI d'aquest example està dissenyat tal com es descriu a l'inici de la secció Secció 4.
A continuació es mostren les introduccions de la implementació:
- Els codis personalitzats s'implementen als custom.c i custom.h donats per GUI Guider com a interfície entre el projecte GUI Guider i el projecte del sistema incrustat.
- Afegiu les noves funcions anomenades gui_xxx() a custom.c per aconseguir les funcions següents:
- Per a la sortida de la UI HAL i l'aplicació GUI per actualitzar la IU.
- Perquè l'aplicació GUI activi esdeveniments trucant a les funcions de devolució de la interfície d'usuari des de la sortida UI HAL.
Per example, la nova funció gui_event_face_rec_action() crida a les funcions de devolució de la interfície d'usuari per gestionar un dels esdeveniments de registre facial, reconeixement facial i supressió d'usuari activats des de l'aplicació GUI quan es fa clic al botó relacionat.
Nota: La funció gui_set_virtual_face() es va cridar a la sortida UI HAL per a preview El mode s'ha d'implementar a custom.c:
- Clonar la funció gui_set_virtual_face() des de smart HMI\coffee_machine\cm4\custom\custom.c.
- Canvia el nom del widget home_img_cameraPreview a screen_img_camera_preview en la funció.
- Implementeu les funcions de devolució de trucada de la interfície d'usuari amb el mateix prototip a totes les de la sortida UI HAL sota el control de la definició de macro #ifndef RT_PLATFORM a custom.c per ser compatibles amb el projecte GUI Guider perquè aquestes funcions a la sortida UI HAL depenen de la plataforma integrada. A custom.c, depenen del simulador de la guia GUI i són independents de la plataforma incrustada. Per example, la devolució de trucada de registre de cara s'implementa com es mostra a continuació per al simulador GUI Guider que s'executa: #ifndef RT_PLATFORM void UI_Registration_Callback() { gui_hide_del_user_btn(true); s_InAction = fals; tornar; }
Nota: Consulteu el mateix prototip de la funció introduït al pas 6 de la Secció 4.1.3
La definició de macro RT_PLATFORM s'estableix a la configuració del projecte de MCUXpresso tal com es mostra a la figura 7: - Declara totes les funcions anomenades UI_xxx_Callback() i gui_xxx() a custom.h i afegiu custom.h inclòs a smart_tlhmi_event_descriptor.h per compartir les API de la GUI a la sortida de la UI HAL.
- Afegiu les noves funcions anomenades gui_xxx() a custom.c per aconseguir les funcions següents:
- Desenvolupa la GUI a GUI Guider:
- Clonar la càmera de la carpeta prèviamentview que conté el programari del projecte GUI Guider a la carpeta gui_guider del paquet de programari base lvgl_gui_camera_preview_cm7. Canvieu el nom relacionat camera_preview to face_rec per al nou example.
- Copieu el custom.c i el personalitzat actualitzats anteriorment. h al nou programari de projecte GUI Guider.
- Obriu el nou projecte face_rec a GUI Guider. Actualitzeu com a continuació:
- Afegiu el botó nou anomenat Suprimeix l'usuari. Afegiu-hi la marca Hidden perquè el botó s'oculti quan s'iniciï l'aplicació GUI.
- Afegiu la línia de codi de crida a l'API gui_event_face_rec_action() amb un paràmetre d'ID d'esdeveniment diferent al disparador "Alliberat" a la configuració d'esdeveniments de tots els botons Registre, Reconeixement i Suprimir usuari per activar els esdeveniments de registre facial, reconeixement facial i supressió d'usuari. La figura 8 mostra el codi de l'esdeveniment del botó Registre:
- Actualitzeu el codi generat des de GUI Guider al projecte MCUXpresso.
- Substituïu els continguts excepte les imatges de la carpeta de la carpeta generada del SW del projecte MCUXpresso per les corresponents a la carpeta generada del SW del projecte GUI Guider.
Nota: Per a més detalls sobre les modificacions introduïdes anteriorment, consulteu l'exampel programari a https://mcuxpresso.nxp.com/appcodehub.
Verificacions amb l'exampel projecte
Per aconseguir l'exampel paquet de programari que conté els recursos i les eines per a aquesta nota d'aplicació, visiteu: https://mcuxpresso.nxp.com/appcodehub. Obriu l'example projecte a MCUXpresso IDE. Creeu i programeu el fitxer .axf file a l'adreça 0x30000000 i programeu la safata de recursos file càmera_preview_resource.bin a l'adreça 0x30800000.
El reconeixement facial LVGL GUI example funciona normalment de la següent manera:
- Preview: amb l'encesa, els fluxos de vídeo capturats per la càmera es mostren a l'àrea específica de la càmera preview a la pantalla GUI. L'etiqueta d'estat mostra "Preview…”. Per obtenir més informació, vegeu la figura 3. El botó Suprimeix l'usuari està ocult. En fer clic a l'àrea fora dels botons i imatges, es mostra el preview indicar com l'anterior després que finalitzi l'acció de registre o reconeixement facial.
- Inscripció:
- tartupa: Quan es fa clic al botó Registre, s'inicia el registre de la cara. L'etiqueta d'estat canvia per mostrar "Registre...", el rectangle de la guia de la cara es mostra blau i la barra de progrés comença a mostrar el progrés. Assegureu-vos que la cara de l'usuari es mostri al rectangle blau de la guia de la cara per al registre.
- èxit: L'etiqueta d'estat mostra "Registre... D'acord" i el número d'identificació d'usuari registrat, el rectangle de la guia de la cara es torna vermella si el registre de la cara té èxit abans que el progrés es mostri complet a la barra.
- Error -> Temps d'espera: l'etiqueta d'estat mostra "Registre... Temps d'espera" si el registre de la cara encara falla quan el progrés es mostra complet a la barra.
- Error -> Duplicació: l'etiqueta d'estat mostra "Registre... Ha fallat", el rectangle de la guia de la cara es torna verd si es reconeix la cara registrada abans que el progrés es mostri complet a la barra.
- la cognició:
- Inici: quan es fa clic al botó Reconeixement, s'inicia el reconeixement facial. L'etiqueta d'estat canvia per mostrar "Reconeixement...", el rectangle de la guia de la cara es mostra blau i la barra de progrés comença a mostrar el progrés. Assegureu-vos que la cara de l'usuari es mostri al rectangle blau de la guia de la cara per al registre.
- èxit: L'etiqueta d'estat mostra "Reconeixement... D'acord" i el número d'identificació d'usuari reconegut, el rectangle de la guia facial es torna verd si el reconeixement facial té èxit abans que el progrés es mostri complet a la barra. En aquest punt, apareix el botó Suprimeix l'usuari. Significa que l'usuari només es pot suprimir quan es reconeix.
- ailure: L'etiqueta d'estat mostra "Reconeixement... Temps esgotat" si el reconeixement facial encara falla quan el progrés es mostra complet a la barra.
- Suprimeix l'usuari: Quan es fa clic al botó "Suprimeix l'usuari", després que el reconeixement facial tingui èxit, l'etiqueta d'estat canvia per mostrar "Suprimeix l'usuari... D'acord" amb el rectangle de la guia facial es torna blau i el progrés es mostra complet a la barra. El botó Suprimeix l'usuari es torna a amagar. La cara/usuari reconegut s'elimina de la base de dades. Significa que aquesta cara/usuari no es pot reconèixer fins que no es torni a registrar.
Nota sobre el codi font del document
ExampEl codi de fitxer que es mostra en aquest document té els següents drets d'autor i llicència BSD-3-Clause:
Copyright 2024 NXP La redistribució i l'ús en formats binaris i font, amb o sense modificació, estan permesos sempre que es compleixin les condicions següents:
- Les redistribucions del codi font han de conservar l'avís de drets d'autor anterior, aquesta llista de condicions i l'exempció de responsabilitat següent.
- Les redistribucions en forma binària han de reproduir l'avís de drets d'autor anterior, aquesta llista de condicions i l'exempció de responsabilitat següent a la documentació i/o altres materials s'han de proporcionar amb la distribució.
- Ni el nom del titular dels drets d'autor ni els noms dels seus col·laboradors no es poden utilitzar per avalar o promocionar productes derivats d'aquest programari sense un permís previ específic per escrit.
AQUEST PROGRAMARI EL PROPORCIONEN ELS TITULARS DELS DRET D'AUTOR I ELS COL·LABORADORS "TAL CUAL" I ES RENUNCIA A QUALSEVOL GARANTIA EXPLÍCITA O IMPLÍCITA, INCLOSA, PERÒ NO LIMITADA A, LES GARANTIES IMPLÍCITES DE COMERCIABILITAT I IDONEIDAD PER A UN FINS PARTICULAR. EN CAP CAS EL TITULAR DEL DRET D'AUTOR O ELS COL·LABORADORS SERÀ RESPONSABLES DE CAP DANYS DIRECTS, INDIRECTS, INCIDENTALS, ESPECIALS, EXEMPLARS O CONSEQUENTLS (INCLOSOS, PERÒ NO LIMITAR-SE A, L'ADQUISICIÓ DE BÉNS O SERVEIS SUBSTITUTS, PÈRDUA DE DADES, UTILITZACIÓ DE DADES; O INTERRUPCIÓ DEL NEGOCI) SIGUI QUANT S'HA CAUSAT I SOBRE QUALSEVOL TEORIA DE RESPONSABILITAT, JA SIGUI CONTRACTUAL, RESPONSABILITAT ESTRICTA O DOLT (INCLOSA LA NEGLIGÈNCIA O ALTRE MANERA) SORRIJADA DE QUALSEVOL MANERA DE L'ÚS D'AQUEST PROGRAMARI, FINS I TOT SI S'INFORMA DE LA POSSIBILITAT D'AQUEST PROGRAMARI.
Historial de revisions
Informació legal
Definicions
Esborrany: l'estat d'esborrany d'un document indica que el contingut encara es troba sota revisió internaview i subjecte a aprovació formal, que pot donar lloc a modificacions o addicions. NXP Semiconductors no ofereix cap representació ni garantia sobre l'exactitud o la integritat de la informació inclosa en una versió esborrany d'un document i no serà responsable de les conseqüències de l'ús d'aquesta informació.
Exempció de responsabilitat
- Garantia limitada i responsabilitat — Es considera que la informació d'aquest document és precisa i fiable. Tanmateix, NXP Semiconductors no ofereix cap representació ni garantia, expressa o implícita, sobre l'exactitud o la integritat d'aquesta informació i no tindrà cap responsabilitat per les conseqüències de l'ús d'aquesta informació. NXP Semiconductors no assumeix cap responsabilitat pel contingut d'aquest document si el proporciona una font d'informació fora de NXP Semiconductors.
En cap cas, NXP Semiconductors serà responsable de cap dany indirecte, incidental, punitiu, especial o consegüent (incloent, sense limitació, guanys perduts, estalvis perduts, interrupció del negoci, costos relacionats amb l'eliminació o substitució de qualsevol producte o càrrecs de reelaboració), ja sigui o no, aquests danys es basen en danys (inclosa negligència), garantia, incompliment de contracte o qualsevol altra teoria legal.
Sense perjudici de qualsevol dany en què el client pugui incórrer per qualsevol motiu, la responsabilitat acumulada i acumulada de NXP Semiconductors envers el client pels productes aquí descrits es limitarà d'acord amb els Termes i condicions de venda comercial de NXP Semiconductors. - Dret a fer canvis — NXP Semiconductors es reserva el dret de fer canvis a la informació publicada en aquest document, incloses, sense limitació, les especificacions i les descripcions dels productes, en qualsevol moment i sense previ avís. Aquest document substitueix i substitueix tota la informació subministrada abans de la seva publicació.
- Idoneïtat per al seu ús — Els productes NXP Semiconductors no estan dissenyats, autoritzats o garantits perquè siguin adequats per al seu ús en sistemes o equips crítics per a la vida o per a la seguretat, ni en aplicacions on es pugui esperar raonablement que la fallada o el mal funcionament d'un producte de NXP Semiconductors provoqui lesions personals, mort o danys greus a la propietat o al medi ambient. NXP Semiconductors i els seus proveïdors no accepten cap responsabilitat per la inclusió i/o l'ús dels productes de NXP Semiconductors en aquests equips o aplicacions i, per tant, aquesta inclusió i/o ús corre pel propi risc del client.
- Aplicacions — Les aplicacions que es descriuen aquí per a qualsevol d'aquests productes només tenen finalitats il·lustratives. NXP Semiconductors no fa cap representació ni garantia que aquestes aplicacions siguin adequades per a l'ús especificat sense més proves o modificacions.
Els clients són responsables del disseny i el funcionament de les seves aplicacions i productes que utilitzen els productes de NXP Semiconductors, i NXP Semiconductors no assumeix cap responsabilitat per cap assistència amb les aplicacions o el disseny del producte del client. És responsabilitat exclusiva del client determinar si el producte NXP Semiconductors és adequat i apte per a les aplicacions del client i els productes planificats, així com per a l'aplicació i l'ús planificats dels clients de tercers del client. Els clients han d'oferir les garanties de disseny i operació adequades per minimitzar els riscos associats amb les seves aplicacions i productes. NXP Semiconductors no accepta cap responsabilitat relacionada amb cap defecte, dany, costos o problema que es basen en qualsevol debilitat o defecte en les aplicacions o productes del client, o l'aplicació o l'ús per part dels clients tercers del client. El client és responsable de fer totes les proves necessàries per a les aplicacions i els productes del client que utilitzen els productes de NXP Semiconductors per tal d'evitar un defecte de les aplicacions i els productes o de l'aplicació o l'ús per part dels clients de tercers del client. NXP no accepta cap responsabilitat en aquest sentit. - Termes i condicions de venda comercial — Els productes NXP Semiconductors es venen subjectes als termes i condicions generals de venda comercial, tal com es publica a https://www.nxp.com/profile/termes, tret que s'acordi el contrari en un acord individual escrit vàlid. En cas que es conclogui un acord individual, només s'aplicaran els termes i condicions del conveni respectiu. NXP Semiconductors s'oposa expressament a l'aplicació dels termes i condicions generals del client pel que fa a la compra dels productes de NXP Semiconductors per part del client.
- Control d'exportació — Aquest document, així com els articles aquí descrits, poden estar subjectes a regulacions de control d'exportacions. L'exportació pot requerir una autorització prèvia de les autoritats competents.
- Idoneïtat per al seu ús en productes no qualificats per a automoció — Tret que aquest document indiqui expressament que aquest producte específic de NXP Semiconductors està qualificat per a automoció, el producte no és adequat per a ús automotriu. No està qualificat ni provat d'acord amb les proves d'automoció o els requisits d'aplicació. NXP Semiconductors no assumeix cap responsabilitat per la inclusió i/o l'ús de productes qualificats no per a automoció en equips o aplicacions d'automoció.
En el cas que el client utilitzi el producte per dissenyar i utilitzar en aplicacions d'automoció segons les especificacions i estàndards d'automoció, el client (a) ha d'utilitzar el producte sense la garantia de NXP Semiconductors del producte per a aquestes aplicacions, ús i especificacions d'automoció, i ( b) sempre que el client utilitzi el producte per a aplicacions d'automoció més enllà de les especificacions de NXP Semiconductors, aquest ús serà exclusivament per compte del client, i (c) el client indemnitzarà totalment NXP Semiconductors per qualsevol responsabilitat, dany o reclamació de producte fallida derivada del disseny i l'ús del client. el producte per a aplicacions d'automoció més enllà de la garantia estàndard de NXP Semiconductors i les especificacions de producte de NXP Semiconductors. - Traduccions — Una versió no anglesa (traduïda) d'un document, inclosa la informació legal d'aquest document, només té caràcter de referència. La versió anglesa prevaldrà en cas de discrepància entre la versió traduïda i la versió anglesa.
- Seguretat — El client entén que tots els productes NXP poden estar subjectes a vulnerabilitats no identificades o poden suportar estàndards o especificacions de seguretat establertes amb limitacions conegudes. El client és responsable del disseny i el funcionament de les seves aplicacions i productes al llarg del seu cicle de vida per reduir l'efecte d'aquestes vulnerabilitats en les aplicacions i productes del client. La responsabilitat del client també s'estén a altres tecnologies obertes i/o patentades suportades pels productes NXP per utilitzar-les a les aplicacions del client. NXP no assumeix cap responsabilitat per cap vulnerabilitat. El client hauria de comprovar regularment les actualitzacions de seguretat de NXP i fer un seguiment adequat. El client ha de seleccionar productes amb característiques de seguretat que compleixin millor les regles, regulacions i estàndards de l'aplicació prevista i prendre les decisions últimes de disseny sobre els seus productes i és l'únic responsable del compliment de tots els requisits legals, reglamentaris i de seguretat relacionats amb els seus productes, independentment de de qualsevol informació o suport que pugui proporcionar NXP.
NXP disposa d'un equip de resposta a incidents de seguretat de producte (PSIRT) (accessible a PSIRT@nxp.com) que gestiona la investigació, els informes i l'alliberament de solucions a les vulnerabilitats de seguretat dels productes NXP.
NXP B.V. — NXP B.V. no és una empresa operativa i no distribueix ni ven productes.
Marques comercials
Avís: Totes les marques de referència, noms de productes, noms de serveis i marques comercials són propietat dels seus respectius propietaris.
NXP — La marca i el logotip són marques comercials de 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 - són marques comercials i/o marques comercials registrades d'Arm Limited (o les seves filials o afiliades) als EUA i/o en una altra part. La tecnologia relacionada pot estar protegida per qualsevol o totes les patents, drets d'autor, dissenys i secrets comercials. Tots els drets reservats.
- i.MX — és una marca comercial de NXP BV
- J-Link — és una marca comercial de SEGGER Microcontroller GmbH.
Microsoft, Azure i ThreadX: són marques comercials del grup d'empreses de Microsoft.
Tingueu en compte que a la secció "Informació legal" s'han inclòs avisos importants sobre aquest document i els productes aquí descrits.
© 2024 NXP BV
Per a més informació, visiteu: https://www.nxp.com
- Data de llançament: 19 d'abril de 2024
- Identificador del document: AN14263
Preguntes freqüents
P: Quin és l'objectiu principal d'aquest producte?
R: L'objectiu principal és habilitar la funció de reconeixement facial mitjançant un model d'algoritme de visió AI&ML amb una GUI LVGL senzilla.ampli a la placa SLN-TLHMI-IOT.
P: Com es poden beneficiar els desenvolupadors d'aquesta nota d'aplicació?
R: Els desenvolupadors poden aprendre a implementar el reconeixement facial al marc pas a pas mitjançant l'exemple proporcionatampConèixer i comprendre els gestors de dispositius, els dispositius HAL i els mecanismes d'esdeveniments implicats.
Documents/Recursos
![]() |
NXP AN14263 Implementeu el reconeixement facial de la GUI LVGL a Framewor [pdfGuia de l'usuari AN14263 Implementeu el reconeixement facial de la GUI LVGL al marc, AN14263, implementeu el reconeixement facial de la GUI LVGL al marc, el reconeixement facial de la GUI LVGL al marc, el reconeixement facial al marc, el reconeixement al marc, al marc |