NXP AN14263 Implementar reconocimiento facial LVGL GUI en Framewor
Información del producto
Presupuesto
- Nombre del producto: Reconocimiento facial de GUI LVGL en el marco
- Revisión del documento: 1 – 19 de abril de 2024
- Palabras clave: Reconocimiento facial, GUI LVGL, marco
Instrucciones de uso del producto
- Encimaview
Este producto permite el modelo de algoritmo de visión AI&ML para el reconocimiento facial en un marco para implementar la función de reconocimiento facial con una simple GUI LVGL ex.amparchivo en la placa SLN-TLHMI-IOT. - Marco terminadoview
El software de la solución está diseñado en torno a una arquitectura marco que incluye administradores de dispositivos responsables de administrar dispositivos, dispositivos HAL para abstraer detalles subyacentes y eventos para la comunicación entre diferentes dispositivos. - Características
El producto permite la implementación de la función de reconocimiento facial a través de la cámara previa.view en la pantalla GUI con botones para activar el registro, reconocimiento y eliminación de rostros. Los datos faciales registrados se almacenan en Flash a través de un file sistema. - Contenido de la nota de aplicación
La nota de aplicación presenta una pantalla GUI LVGL con cámara previa.view y botones para acciones relacionadas con la cara. Ayuda a los desarrolladores a comprender el marco y cómo implementar el reconocimiento facial utilizando el ex proporcionado.ampel.
Encimaview
NXP ha lanzado un kit de desarrollo de soluciones llamado SLN-TLHMI-IOT que se centra en aplicaciones HMI inteligentes. Permite HMI inteligente con interfaz de usuario de visión, voz y gráficos de ML implementada en una MCU NXP i.MX RT117H. Basado en el SDK, el software de la solución se basa en un diseño llamado marco que admite diseños flexibles y personalización de funciones de visión y voz. Para ayudar a los usuarios a utilizar mejor la plataforma de software, se proporcionan algunos documentos básicos, por ejemploample, la guía del usuario de desarrollo de software. La guía presenta el diseño de software básico y la arquitectura de las aplicaciones que cubren todos los componentes de la solución, incluido el marco, para ayudar a los desarrolladores a implementar sus aplicaciones de manera más fácil y eficiente utilizando SLN-TLHMI-IOT.
Para obtener más detalles sobre la solución y los documentos relevantes, visite el web página de la solución HMI inteligente EdgeReady de NXP basada en i.MX RT117H con ML Vision, voz y interfaz de usuario gráfica. Sin embargo, todavía no es tan fácil para los desarrolladores implementar sus aplicaciones HMI inteligentes consultando estas guías básicas. Está prevista una serie de notas de aplicación para ayudar a estudiar el desarrollo del marco paso a paso. Esta nota de aplicación se basa en Implementar LVGL GUI Camera Preview sobre Marco (documento AN14147). Esta nota de aplicación describe cómo habilitar el modelo de algoritmo de visión AI&ML para el reconocimiento facial en el marco para implementar la función de reconocimiento facial a través de la cámara previa.view en la pantalla GUI con una simple GUI LVGL examparchivo en la placa SLN-TLHMI-IOT. En la nota de solicitud, el example presenta una pantalla GUI LVGL con una cámara previaview y algunos botones para activar el registro, reconocimiento y eliminación de rostros. Los datos faciales registrados se almacenan en Flash a través de un pequeño file sistema.
En un nivel alto, la nota de aplicación contiene los siguientes contenidos:
- Habilite la función de reconocimiento facial en el marco.
- Agregue soporte de base de datos de rostros en el marco a través de file sistema en Flash.
- Implemente la aplicación GUI LVGL. A través de las introducciones anteriores, este documento ayuda a los desarrolladores a:
- Comprenda más profundamente el marco y el software de la solución HMI inteligente.
- Desarrolle su reconocimiento facial AI&ML en el marco con la aplicación GUI LVGL.
Marco terminadoview
El software de la solución está diseñado principalmente en torno al uso de la arquitectura marco que se compone de varias partes diferentes:
- Administradores de dispositivos: la parte central
- Dispositivos de capa de abstracción de hardware (HAL)
- Mensajes/Eventos
Como se muestra en la Figura 1, el excesoview del mecanismo del marco es:
Los administradores de dispositivos son responsables de administrar los dispositivos utilizados por el sistema. Cada tipo de dispositivo (entrada, salida, etc.) tiene su propio administrador de dispositivos específico. Cuando un administrador de dispositivos se inicia después de que se registran los dispositivos, espera y verifica un mensaje para transferir datos a los dispositivos y a otros administradores después de inicializar e iniciar los dispositivos registrados. Los dispositivos HAL están escritos encima del código del controlador de nivel inferior, lo que ayuda a aumentar la comprensión del código al abstraer muchos de los detalles subyacentes.
Los eventos son un medio por el cual se comunica información entre diferentes dispositivos a través de sus gestores. Cuando se activa un evento, el dispositivo que recibió primero el evento lo comunica a su administrador y luego, a su vez, notifica a otros administradores designados para recibir el evento.
El diseño arquitectónico de la estructura se centró en tres objetivos principales:
- Facilidad de uso
- Flexibilidad/Portabilidad
- Actuación
El marco está diseñado con el objetivo de acelerar el tiempo de comercialización de la visión y otras aplicaciones de aprendizaje automático. Para garantizar una comercialización rápida, es fundamental que el software en sí sea fácil de entender y modificar. Teniendo este objetivo en mente, la arquitectura del marco es fácil de modificar sin ser restrictiva y sin afectar el rendimiento.
Para obtener más detalles sobre el marco, consulte la Guía del usuario de desarrollo de software Smart HMI (documento MCU-SMHMI-SDUG).
Biblioteca de gráficos ligera y versátil (LVGL)
LVGL (Biblioteca de gráficos ligera y versátil) es una biblioteca de gráficos gratuita y de código abierto que proporciona todo lo que necesita para crear una GUI integrada con elementos gráficos fáciles de usar, hermosos efectos visuales y poca memoria.
Guía de GUI
GUI Guider es una herramienta de desarrollo de interfaz gráfica de usuario fácil de usar de NXP que permite el desarrollo rápido de pantallas de alta calidad con la biblioteca de gráficos LVGL de código abierto. El editor de arrastrar y soltar de GUI Guider facilita el uso de muchas funciones de LVGL, como widgets, animaciones y estilos, para crear una GUI con codificación mínima o sin codificación.
Con solo hacer clic en un botón, puede ejecutar su aplicación en un entorno simulado o exportarla a un proyecto de destino. El código generado desde GUI Guider se puede agregar fácilmente a su proyecto, lo que acelera el proceso de desarrollo y le permite agregar sin problemas una interfaz de usuario integrada a su aplicación. GUI Guider es de uso gratuito con las MCU cruzadas y de propósito general de NXP e incluye plantillas de proyecto integradas para varias plataformas compatibles. Para obtener más información sobre LVGL y el desarrollo de GUI en GUI Guider, consulte Biblioteca de gráficos ligeros y versátiles y GUI Guider.
Entorno de desarrollo
Primero, prepare y configure el entorno de hardware y software para implementar el example en el marco.
Entorno de hardware
El entorno de hardware está configurado para verificar el exampen:
- El kit de desarrollo HMI inteligente basado en NXP i.MX RT117H (el kit SLN_TLHMI_IOT)
- SEGGER J-Link con un adaptador Cortex-M de 9 pines y V7.84a o una versión más reciente del controlador
entorno de software
El entorno de software está configurado para desarrollar el ex.ampen:
- MCUXpresso IDE V11.7.0
- Guía GUI V1.6.1-GA
- lvgl_gui_camera_preview_cm7 – exampEl código de la segunda nota de aplicación como software base del desarrollo. Para más detalles, consulte https://mcuxpresso.nxp.com/appcodehub.
- RT1170 SDK V2.13.0: como recurso de código para el desarrollo.
- Software SLN-TLHMI-IOT V1.1.2: código fuente HMI inteligente publicado en el repositorio GitHub de NXP como recurso de código para el desarrollo. Para obtener más detalles, consulte: GitHub – NXP/mcu-smhmi en v1.1.2
Para obtener detalles sobre la adquisición y configuración del entorno de software, consulte: Introducción a SLN-TLHMI-IOT.
Arquitectura de visión en el marco.
La arquitectura de visión en el marco se muestra en la Figura 2. El algoritmo de visión HAL (OASIS_HAL) tiene los siguientes procesos:
- Realice el registro y reconocimiento facial a través del modelo de algoritmo de visión AI&ML después de recibir los eventos relacionados de la interfaz de usuario HAL de salida. Notifique los resultados de la inferencia del modelo de algoritmo a la interfaz de usuario HAL de salida.
- Accede (agrega, elimina…) a la base de datos de características faciales en función del pequeño file sistema llamando a las API de FaceDB HAL después de recibir los eventos relacionados desde la interfaz de usuario HAL de salida.
- Solicite el fotograma de vídeo de la cámara HAL al realizar el registro y reconocimiento facial.
Implementar el reconocimiento facial en el marco.
El reconocimiento facial LVGL GUI example (el exampEl archivo se proporciona más adelante) en el marco se implementa basándose en el exampCódigos de archivo de Implement LVGL GUI Camera Preview sobre Marco (documento AN14147).
Por demostrar el reconocimiento facial en el ex.amparchivo, la función básica de la aplicación GUI (consulte la pantalla principal en la Figura 3) está diseñada como se describe a continuación:
- La aplicación GUI activa el evento de registro o reconocimiento facial en la interfaz de usuario HAL de salida al hacer clic en el botón Registro o Reconocimiento. Y la interfaz de usuario HAL de salida notifica el evento de agregar un usuario al algoritmo de visión HAL después de que el registro facial se haya realizado correctamente.
- La aplicación GUI activa el evento de eliminar un usuario en la interfaz de usuario HAL de salida al hacer clic en el botón Eliminar usuario después de que se reconoce la cara del usuario.
- La aplicación GUI activa el evento de detener la ejecución del algoritmo oasis en la interfaz de usuario HAL de salida al hacer clic en la pantalla fuera de los botones e imágenes.
Preparar el paquete de software para la implementación del ex.ampel.
- Clonar el software base lvgl_gui_camera_preview_cm7. Cambiar el nombre del proyecto y el principal. filenombre a lvgl_gui_face_rec_cm7.
- Es necesario actualizar el marco en el software ya que los códigos fuente del núcleo del marco comenzaron a ser públicos en GitHub a partir de la versión 1.1.2.
- Reemplace la carpeta del marco con la copia de V1.1.2 de GitHub, excepto la files fwk_log.h y fwk_common.h en inc\ ya que han sido modificados para la serie de notas de aplicación. Las operaciones se muestran en la Figura 4:
- Elimine la carpeta framework_cm7 en el grupo libs y elimine la biblioteca framework_cm7 y su ruta de búsqueda configurada en Proyecto > Propiedades > C/C++ Build > configuración > Configuración de herramientas > MCU C++ Linker > Bibliotecas ya que se proporciona el código fuente del núcleo.
Habilitar la función de reconocimiento facial en el marco
La función de reconocimiento facial se basa en el modelo de algoritmo de visión ML proporcionado como una biblioteca estática: una biblioteca de tiempo de ejecución oasis lite de NXP. La biblioteca es una biblioteca de IA pequeña, altamente eficiente, personalizada y optimizada. El modelo incluye detección de rostros, reconocimiento de rostros, detección de vidrio y detección de vida. Proporciona principalmente la API OASISLT_run_extended() para ejecutar el proceso de reconocimiento facial mientras actualiza los resultados a la persona que llama a través de devoluciones de llamadas de eventos, y agrega/actualiza/elimina caras en la base de datos a través de las devoluciones de llamadas de la base de datos de rostros después de especificar la información del marco de origen, las devoluciones de llamadas y la memoria. grupo utilizado por la biblioteca llamando a otra API OASISLT_init() en la inicialización. La llamada de las API y las funciones de devolución de llamada se implementan en el algoritmo de visión HAL del marco.
Agregar biblioteca de modelos de algoritmo de visión
- Copie la carpeta oasis que contiene la biblioteca y el encabezado relacionado file desde smart HMI\coffee_machine\cm7\libs\ a la carpeta libs del exampel SW.
- Agregue la ruta de búsqueda del encabezado. file en Proyecto > Propiedades > Compilación C/C++ > configuración > Configuración de herramientas > Compilador MCU C > Incluye y compilador MCU C++ > Incluye: “${workspace_loc:/${ProjName}/libs/oasis/include}”
- Agregue la biblioteca y su ruta de búsqueda en Proyecto > Propiedades > C/C++ Build > configuración > MCU C+ + Linker > Bibliotecas: liboasis_lite2D_DEFAULT_117f_ae.a “${workspace_loc:/${ProjName}/libs/oasis}” y la definición de macro para habilite la función en Proyecto > Propiedades > Compilación C/C++ > configuración > Configuración de herramientas > Compilador MCU C > Preprocesador y compilador MCU C++ > Preprocesador: SMART_TLHMI_2D
Habilitar algo de visión HAL
El algoritmo de visión HAL hace que el modelo de algoritmo de visión funcione y responde los resultados a la salida HAL de la interfaz de usuario después de recibir los eventos del mismo.
Para habilitarlo, clone el controlador HAL similar existente file donde se implementan las siguientes funciones:
- Implemente las devoluciones de llamadas de las operaciones de bases de datos faciales y el manejo de eventos.
- Haga que el algoritmo de visión funcione llamando a las API de la biblioteca oasis.
- Acceda a la base de datos de caras de usuario y a la base de datos de aplicaciones (no es necesario en el example).
- Reciba eventos y envíe resultados a la salida UI HAL.
Las principales obras para implementar el HAL para el exampson:
- Clonar el controlador HAL similar existente file y cambiar los nombres relacionados.
- Elimine los códigos relacionados con las operaciones de datos de la aplicación.
- Actualice las definiciones y funciones para manejar los eventos de la interfaz de usuario HAL de salida según exampdiseño.
- Agregue las configuraciones requeridas en la inicialización de oasis.
Los pasos detallados son los siguientes:
- Clonar hal_vision_algo_oasis_coffeemachine.c. Cambiar el filenombre a hal_vision_algo_oasis_guifacerec.c. Y reemplace todas las cadenas CoffeeMachine con GUIFaceRec en el file.
- Elimine los códigos que contienen la cadena coffeedb (no distingue entre mayúsculas y minúsculas) relacionados con la base de datos de la aplicación, por ejemplo.amparchivo, #include hal_sln_coffeedb.h.
- Modifique la función HAL_VisionAlgoDev_OasisGUIFaceRec_InputNotify() para manejar los eventos de la interfaz de usuario HAL de salida.
- Cambie la definición de evento kEventFaceRecId_RegisterCoffeeSelection a kEventFaceRecId_RegisterUserFace y la cadena de estructura regCoffeeSelection a regGUIFaceRec para que el manejo de eventos agregue nuevos datos de características faciales a la base de datos.
- Para mostrar el proceso estándar de las acciones de reconocimiento facial en el examparchivo, modifique el manejo en el caso de kEventFaceRecID_OasisSetState con las definiciones de los estados:
- kOASISLiteState
- Registro kOASISLiteState
- Reconocimiento kOASISLiteState
- Interrumpido
- Agregue y modifique las definiciones de los eventos mencionados en el paso anterior.
- Copia el encabezado file smart_tlhmi_event_descriptor.h desde smart HMI\coffee_machine \cm7\source\event_handlers\ en la carpeta fuente del exampel SW. Actualizar el file Como se muestra a continuación:
- Cambie la definición de evento kEventFaceRecId_RegisterCoffeeSelection a kEventFaceRecId_RegisterUserFace en el tipo de enumeración _event_smart_tlhmi_id y la cadena de estructura regCoffeeSelection a regGUIFaceRec en la estructura _event_smart_tlhmi. Entonces, cambie la estructura Register_coffee_selection_event_t para regCoffeeSelection a Register_gui_facerec_event_t.
- Elimine el resto del contenido utilizado para la aplicación de la máquina de café, por ejemplo.amparchivo, la línea de código sobre voz: #include “hal_event_descriptor_voice.h”.
- Agregue los tipos kOASISLiteState_Stopped y kOASISLiteState_Running al tipo de enumeración oasis_lite_state_t en hal_vision_algo.h en framework>hal>vision en el proyecto como se muestra a continuación:
typedef enumeración _oasis_lite_state {- kOASISLiteState
- Ejecutando, kOASISLiteState
- Detenido, kOASISLiteState
- Reconocimiento,
- kOASISLiteState
- Registro, kOASISLiteState
- Baja del registro, kOASISLiteState
- Registro remoto, kOASISLiteState
- Contar
- Utilice la estructura oasis_lite_state_t actualizada anteriormente para refinar la estructura oasis_state_event_t en hal_event_descriptor_face_rec.h en framework>hal>vision en el proyecto como se muestra a continuación: typedef struct _oasis_state_event_t { oasis_lite_state_t state; } oasis_state_event_t;
- Cambie todo kEventInfo_Remote a kEventInfo_Local para enviar eventos desde el algoritmo de visión HAL a otros HAL que se ejecutan en el mismo núcleo, ya que en el ex se usa un solo núcleo en lugar de doble núcleo.ampel.
- Agregue y modifique las siguientes configuraciones para la inicialización de oasis en OASISLT_init():
- Agregue las definiciones de macro y las secciones de memoria para el cuadro de video en 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
- #definir AT_FB_SHMEM_SECTION_ALIGN(var, alignbytes) \
- __atributo__((sección(“.bss.$fb_sh_mem,\”aw\”,%nobits @”))) var
- __atributo__((alineado(alignbytes)))
- Configure la asignación de memoria a la sección de memoria anterior fb_sh_mem en Proyecto > Propiedades > Compilación C/C++ > Configuración de MCU que se muestra en la Figura 5:
- Declare la variable global g_DTCOPBuf en lvgl_gui_face_rec_cm7.cpp: AT_NONCACHEABLE_SECTION_ALIGN_DTC (uint8_t g_DTCOPBuf[DTC_OPTIMIZE_BUFFER_SIZE], 4);
- Continúe agregando las definiciones utilizadas en la variable anterior:
- Defina la sección anterior en board_define.h:
- #define AT_NONCACHEABLE_SECTION_ALIGN_DTC(var, alignbytes) \
- atributo__((sección(“.bss.$SRAM_DTC_cm7,\”aw\”,%nobits @”))) var
- atributo__((alineado(alignbytes)))
- Incluir el encabezado file hal_vision_algo.h que contiene la definición de macro DTC_OPTIMIZE_BUFFER_SIZE en app_config.h incluida en lvgl_gui_face_rec_cm7.cpp.
- Agregue las definiciones de macro y las secciones de memoria para el cuadro de video en board_define.h: #define OASIS_RGB_FRAME_WIDTH 800
- Establezca la variable s_debugOption en verdadero para mostrar el estado de progreso en el reconocimiento facial.
- Agregue la ruta de búsqueda del encabezado. files de la visión HAL en Proyecto > Propiedades > C/C++ Build > configuración > Configuración de herramientas > Compilador MCU C > Incluye y compilador MCU C++ > Incluye: “${workspace_loc:/${ProjName}/framework/hal/vision}”
- Agregue la siguiente definición para habilitar el algoritmo de visión HAL en board_define.h: #define ENABLE_VISIONALGO_DEV_Oasis_GUIFaceRec
Habilitar salida UI HAL
La interfaz de usuario de salida HAL notifica los eventos al algoritmo de visión HAL y responde a los resultados de la inferencia del algoritmo de visión HAL. Con la aplicación GUI, los eventos generalmente los activa la aplicación y los resultados se muestran en la aplicación.
Para habilitarlo, clone el controlador HAL similar existente file donde generalmente se implementan las siguientes funciones:
- Notificar los eventos para el reconocimiento facial y el acceso a la base de datos.
- Implemente las devoluciones de llamada para que la aplicación GUI desencadene los eventos.
- Manejar los resultados de inferencia del módulo de algoritmo de visión.
- Muestre el proceso y los resultados del manejo de eventos en la interfaz de usuario mediante la barra de progreso controlada con los temporizadores y el rectángulo de guía facial.
Las principales obras para implementar el HAL para el exampLos archivos utilizados en este documento son:
- Clonar el controlador HAL similar existente file y cambiar los nombres relacionados.
- Elimina los códigos relacionados con la aplicación.
- Actualizar las funciones para la notificación de eventos y respuesta de resultados según exampdiseño.
- Agregue las devoluciones de llamada para que la aplicación GUI active los eventos.
Los pasos detallados son los siguientes:
- Clonar hal_output_ui_coffee_machine.c. Cambiar el filenombre a hal_output_ui_guifacerec.c.
- Reemplace todas las cadenas CoffeeMachine con GUIFaceRec en el file.
- Elimina los códigos relacionados con la aplicación – máquina de café.
- Elimine las funciones WakeUp() y _StandBy() y los códigos relacionados (puede buscarlos en la cadena wake_up y standby).
- Quitar preview eventos de modo que manejan códigos relacionados en HAL_OutputDev_UiGUIFaceRec_Input Notify().
- Elimina las funciones UI_xxx_Callback() y los códigos que contienen la cadena gui_ y pantalla relacionados con la GUI de la máquina de café excepto gui_set_virtual_face() para la preview función de modo.
- Elimine todos los códigos involucrados con las variables s_IsWaitingAnotherSelection y s_IsWaitingRegisterSelection relacionadas con la aplicación de la máquina de café.
- Elimina los códigos relacionados con voz, audio e idioma. por ejemploampen:
- #incluye “hal_voice_algo_asr_local.h”,
- #incluir "hal_event_descriptor_voice.h"
- Para la notificación de diversos eventos, implemente las nuevas funciones _OutputManagerNotify(), _SetFaceRec(), _RegisterGUIFaceRec() y DeregisterGUIFaceRec() haciendo referencia a las funciones _StopFaceRec(), _RegisterCoffeeSelection() y DeregisterCoffeeSelection() antes de eliminarlos.
- _OutputManagerNotify() implementa la función básica de salida de eventos para enviar un evento al algoritmo de visión HAL. Las siguientes funciones lo llaman para enviar sus propios eventos.
- _SetFaceRec() envía el evento kEventFaceRecID_OasisSetState para activar el algoritmo de visión para el registro y reconocimiento de rostros y detener el algoritmo.
- _RegisterGUIFaceRec() envía el evento kEventFaceRecId_RegisterGUIFaceRec que se define en smart_tlhmi_event_descriptor.h para agregar datos de características faciales a la base de datos cuando el registro es correcto.
- DeregisterGUIFaceRec() envía el evento kEventFaceRecID_DelUser para eliminar los datos de características faciales de la base de datos al pasar el reconocimiento facial.
- Actualice los códigos para realizar las acciones correspondientes, incluida la actualización de la GUI llamando a las API desde la aplicación GUI de LVGL para obtener los resultados de inferencia del registro y reconocimiento de rostros en la función _InferComplete_Vision() según el exampnuestro diseño. por ejemploampes decir, cuando el registro facial es exitoso,
- Deje de mostrar el progreso llamando a _FaceRecProcess_Stop();
- Detenga el registro de rostros llamando a _SetFaceRec(kOASISLiteState_Stopped);
- Muestra el resultado exitoso en la GUI: gui_show_face_rec_result(kFaceRecResult_OK, s_UserId);
- Registre los datos de la cara en la base de datos: _RegisterUserFace(s_UserId);
- Agregue funciones de devolución de llamada de UI para manejar los eventos: preview, registro facial, reconocimiento y eliminación de usuarios activados desde la GUI. por ejemploamparchivo, la devolución de llamada de registro de rostro: void UI_Registration_Callback(){ _SetFaceRec(kOASISLiteState_Registration); _FaceRecProcess_Start(); }
- Y agrega las funciones _FaceRecProcess_Start() y _FaceRecProcess_Stop() para mostrar el progreso y estado en los diferentes eventos y resultados.
- Actualice la función de devolución de llamada ISR del temporizador _SessionTimer_Callback() para manejar el caso de tiempo de espera llamando a: gui_show_face_rec_result(kFaceRecResult_TimeOut, s_UserId);
- Agregue las siguientes definiciones para habilitar la salida HAL de la interfaz de usuario en board_define.h: #define ENABLE_OUTPUT_DEV_UiGUIFaceRec
Aviso:
Para presentar mejor la función de reconocimiento facial, mantenga la función para mostrar el proceso y los resultados del reconocimiento facial en la interfaz de usuario HAL de salida. La función se describe a continuación.
- El rectángulo de la guía de rostros se muestra en azul y la barra de progreso muestra el progreso al iniciar el registro o reconocimiento de rostros.
- El rectángulo de la guía de rostros se muestra en rojo cuando el registro de rostros se realiza correctamente.
- El rectángulo de la guía facial se muestra en verde cuando el reconocimiento facial se realiza correctamente.
- El rectángulo de la guía facial se mantiene azul y la barra de progreso muestra el progreso completo cuando la acción no tiene éxito después de que expire el temporizador. En ese punto, detenga el registro o reconocimiento facial.
La barra de progreso y el rectángulo de guía de caras se presentan como iconos integrados en el binario de recursos. file para ser programado en Flash. Los punteros a los datos de los iconos en SDRAM se configuran en la función LoadIcons(APP_ICONS_BASE) llamada en la inicialización del dispositivo UI HAL de salida en la UI HAL de salida. Debe implementar el soporte de iconos para la función.
Implementar el soporte de iconos.
- Cree el recurso combinando los iconos con las imágenes utilizadas en la aplicación GUI LVGL:
- Clona el encabezado de los cuatro íconos files Process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h y virtual_face_red_420x426.h desde HMI inteligente
\coffee machine\resource\icons\ a los nuevos iconos de carpeta bajo la carpeta de recursos del exampel SW. - Agregue la ruta de búsqueda para los cuatro íconos files en la cámara_preview_recurso.txt file en la carpeta de recursos, por ejemploamparchivo: icono ../resource/icons/process_bar_240x14.h
- Ejecutar cámara_preview_resource_build.bat para construir los recursos de imágenes e íconos para generar el contenedor file cámara_preview_resource.bin y la información file Resource_information_table.txt (Ver Figura 6).
- Clona el encabezado de los cuatro íconos files Process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h y virtual_face_red_420x426.h desde HMI inteligente
- Defina la dirección de inicio en SDRAM y el tamaño de los iconos en app_config.h. La dirección comienza junto a las imágenes de la aplicación GUI. El tamaño se genera en la información. file. #definir APP_ICONS_BASE (APP_RES_SHMEM_BASE + APP_LVGL_IMGS_SIZE) #definir APP_ICONS_SIZE 0x107c40
- Actualice el tamaño asignado de la sección de memoria denominada res_sh_mem a 0x200000 redefiniéndola en app_config.h: #define RES_SHMEM_TOTAL_SIZE 0x200000 y la configuración correspondiente en Proyecto > Propiedades > Compilación C/C++ > Configuración de MCU.
- Agregue el tamaño del icono al tamaño total del recurso cargado de Flash a SDRAM en la función APP_LoadResource() en el archivo principal. file lvgl_gui_face_rec_cm7.cpp: memcpy((void *)APP_LVGL_IMGS_BASE, pLvglImages, APP_LVGL_IMGS_SIZE + APP_ICONS_SIZE);
Aviso: Para completar la función de reconocimiento facial, se necesita la compatibilidad con la aplicación LVGL GUI. La aplicación LVGL GUI llama a las funciones de devolución de llamada de la interfaz de usuario en la interfaz de usuario HAL de salida para manejar los eventos desde la pantalla de la interfaz de usuario. Por otro lado, la interfaz de usuario HAL de salida llama a las API desde la aplicación GUI LVGL para actualizar la interfaz de usuario y mostrar el resultado y el estado. El desarrollo de la aplicación LVGL GUI es relativamente independiente y se presenta en la Sección 4.3.
4.1.5 Iniciar dispositivos y administradores HAL para reconocimiento facial
El algoritmo de visión habilitado HAL y la salida de UI HAL y sus administradores se inician en la ventana principal. file
lvgl_gui_face_rec_cm7.cpp siguiendo las conversiones de desarrollo en el marco como se muestra a continuación:
- Incluir el encabezado file relacionado con los dos administradores HAL agregando la línea de código:
- #incluir "fwk_output_manager.h"
- #incluir “fwk_vision_algo_manager.h”
- Declare los dispositivos HAL:
- HAL_VALGO_DEV_DECLARE(OasisGUIFaceRec);
- HAL_OUTPUT_DEV_DECLARE(UiGUIFaceRec);
- Registre los dispositivos HAL:
- HAL_VALGO_DEV_REGISTER(OasisGUIFaceRec, retirado);
- HAL_OUTPUT_DEV_REGISTER(UiGUIFaceRec, retirado);
- Inicialice los administradores:
- FWK_MANAGER_INIT(VisionAlgoManager, retirado);
- FWK_MANAGER_INIT(OutputManager, retirado);
- Inicie los gerentes:
- FWK_MANAGER_START(VisionAlgoManager, VISION_ALGO_MANAGER_TASK_PRIORITY, retirado);
- FWK_MANAGER_START(OutputManager, OUTPUT_MANAGER_TASK_PRIORITY, retirado);
- Definir la prioridad de las tareas del administrador:
- #definir VISION_ALGO_MANAGER_TASK_PRIORITY 3
- #definir OUTPUT_MANAGER_TASK_PRIORITY 1
Agregar soporte de base de datos de rostros en el marco
Se accede a los datos de características faciales registrados en la base de datos de caras almacenada en Flash a través de un pequeño file sistema. Los pasos para agregar el soporte de la base de datos de rostros se describen a continuación.
Agregar controladores para almacenamiento Flash
Copie el controlador FlexSPI de la interfaz Flash files fsl_flexspi.c y fsl_flexspi.h, y el controlador de cifrado de datos files fsl_caam.c y fsl_caam.h desde la ruta SDK_2_13_0_MIMXRT1170-EVK\devices \MIMRX1176\drivers\ a la carpeta de controladores del exampel SW.
Agregar soporte a nivel de placa
- Agregue las definiciones de FlexSPI utilizadas para el dispositivo Flash integrado en board.h:
- #definir BOARD_FLEXSPI FLEXSPI1
- #definir BOARD_FLEXSPI_CLOCK kCLOCK_FlexSpi1
- #definir BOARD_FLEXSPI_AMBA_BASE FlexSPI1_AMBA_BASE
- Copiar los operadores y configuraciones. files del dispositivo Flash flexspi_nor_flash_ops.c, flexspi_nor_flash_ops.h, sln_flash_config.c, sln_flash_config_w25q256jvs.h y sln_flash_ops.h en la ruta smart HMI\coffee_machine\cm7\source\flash_config\ al tablero de carpetas del exampel SW.
- Desmarque "Excluir recurso de la compilación" en C/C++ Build > Configuración después de hacer clic derecho en el files y abriendo las Propiedades para permitir que se incorporen al proyecto.
- Cambiar el encabezado incluido filenombre sln_flash_config.h a sln_flash_config_w25q256jvs.h en sln_flash_config.c y flexspi_nor_flash_ops.h.
- Configure la fuente de reloj FlexSPI1 en el file clock_config.c haciendo referencia a la aplicación de la máquina de café.
Agregar adaptador y soporte de nivel medio
- Copiar el files sln_flash.c, sln_flash.h, sln_encrypt.c y sln_encrypt.h como controladores de adaptador para file sistema y aplicación desde la ruta de smart HMI\coffee_machine\cm7\source\ a la carpeta fuente del example. actualizar lo nuevo files:
- Desmarque "Excluir recurso de la compilación" en ellos para la compilación.
- Cambiar todo el encabezado incluido file nombre sln_flash_config.h a sln_flash_config_w25q256jvs.h.
- Copia la carpeta filesistema que contiene las API para los pequeños filesistema y controlador HAL desde smart HMI \coffee_machine\cm7\source\ al exampel SW. Y actualice para la nueva carpeta:
- Desmarque "Excluir recurso de la compilación" para la compilación.
- Agregue la ruta de inclusión en la configuración del proyecto: “${workspace_loc:/${ProjName}/filesistema}"
- Cambiar el encabezado incluido file nombre sln_flash_config.h a sln_flash_config_w25q256jvs.h y fica_definition.h a app_config.h en el file sln_flash_littlefs.h.
- Copie la carpeta littlefs que contiene el middleware – little filesistema desde la ruta SDK_2_13_0_ MIMXRT1170-EVK\middleware\ hasta el exampel SW. Y actualice la nueva carpeta:
- Desmarque "Excluir recurso de la compilación" para la compilación.
- Agregue la ruta de inclusión en la configuración del proyecto: "${workspace_loc:/${ProjName}/littlefs}"
Agregar controladores HAL
- Hay dos dispositivos HAL: file El sistema y la base de datos facial HAL son compatibles con la función de acceso a la base de datos y ya están implementados en el marco sin ningún cambio. Habilítelos agregando las siguientes definiciones en board_define.h:
- #definir ENABLE_FLASH_DEV_Littlefs
- #definir ENABLE_FACEDB
Y cambia el nombre de la base de datos de rostros del ex.amparchivo: #define OASIS_FACE_DB_DIR “oasis_gui_face_rec”
Agregar soporte a nivel de aplicación
- Actualizar el principal file lvgl_gui_face_rec_cm7.cpp:
- Incluir el encabezado file relacionado con flash file administrador HAL del sistema agregando la línea de código: #include “fwk_flash.h”
- Declarar y registrar file Dispositivo HAL del sistema:
- HAL_FLASH_DEV_DECLARE(Littlefs);
- HAL_FLASH_DEV_REGISTER(Littlefs, retirado);
Nota: El file El dispositivo HAL del sistema debe registrarse antes de que todos los administradores de dispositivos se inicialicen en la función APP_InitFramework().
- Llame a la función BOARD_ConfigMPU() en APP_BoardInit() para configurar MPU.
- Establecer el file asignación del sistema en Flash en el file app_config.h definiendo las definiciones de macro utilizadas en el file sln_flash_littlefs.h:
- #definir FICA_IMG_FILE_SYS_ADDR (FLASH_IMG_SIZE + RES_SHMEM_TOTAL_SIZE)
- #definir FICA_FILE_SYS_SIZE (0x280000)
Configuraciones
Algunos códigos relacionados con Flash se ejecutan en el área SRAM ITC para lograr un rendimiento suficiente. Copie la carpeta linkscripts que contiene las configuraciones del vinculador desde la ruta smart HMI\coffee_machine\cm7\ al exampel SW.
Implementar una aplicación GUI LVGL
El desarrollo de una aplicación GUI LVGL basada en el marco llama a las API desde la interfaz de usuario HAL de salida y proporciona las API para la interfaz de usuario HAL de salida (consulte la Sección 4.1.3 para conocer la implementación de la interfaz de usuario HAL de salida).
Sin embargo, la implementación detallada de una aplicación GUI LVGL depende de los requisitos y el diseño de la aplicación. La aplicación GUI en este ex.ampEl archivo está diseñado como se describe al principio de la sección Sección 4.
A continuación se muestran las introducciones de implementación:
- Los códigos personalizados se implementan en custom.c y custom.h proporcionados por GUI Guider como interfaz entre el proyecto GUI Guider y el proyecto del sistema integrado.
- Agregue las nuevas funciones denominadas gui_xxx() en custom.c para lograr las siguientes funciones:
- Para la salida UI HAL y la aplicación GUI para actualizar la UI.
- Para que la aplicación GUI active eventos llamando a funciones de devolución de llamada de la UI desde la salida UI HAL.
Por ejemploampEn este ejemplo, la nueva función gui_event_face_rec_action() llama a funciones de devolución de llamada de la interfaz de usuario para manejar uno de los eventos de registro de rostros, reconocimiento de rostros y eliminación de usuarios que se activan desde la aplicación GUI cuando se hace clic en el botón relacionado.
Nota: La función gui_set_virtual_face() llamada en la salida UI HAL para preview El modo debe implementarse en custom.c:
- Función de clonación gui_set_virtual_face() desde smart HMI\coffee_machine\cm4\custom \custom.c.
- Cambiar el nombre del widget home_img_cameraPreview a screen_img_camera_preview en la función.
- Implemente las funciones de devolución de llamada de la UI con el mismo prototipo para todas las de la UI de salida HAL bajo el control de la definición de macro #ifndef RT_PLATFORM en custom.c para ser compatible con el proyecto GUI Guider porque estas funciones en la UI de salida HAL dependen del plataforma integrada. En custom.c, dependen del simulador en la guía GUI y son independientes de la plataforma integrada. por ejemploamparchivo, la devolución de llamada de registro de rostro se implementa de la siguiente manera para el simulador GUI Guider en ejecución: #ifndef RT_PLATFORM void UI_Registration_Callback() { gui_hide_del_user_btn(true); s_InAction = falso; devolver; }
Nota: Consulte el mismo prototipo de la función presentada en el paso 6 de la Sección 4.1.3.
La definición de macro RT_PLATFORM se establece en la configuración del proyecto de MCUXpresso como se muestra en la Figura 7: - Declare todas las funciones denominadas UI_xxx_Callback() y gui_xxx() en custom.h y agregue custom.h incluido en smart_tlhmi_event_descriptor.h para compartir las API de la GUI con la salida HAL de la UI.
- Agregue las nuevas funciones denominadas gui_xxx() en custom.c para lograr las siguientes funciones:
- Desarrollar la GUI en GUI Guider:
- Clonar la carpeta pre cámaraview que contiene el software del proyecto GUI Guider en la carpeta gui_guider en el paquete de software base lvgl_gui_camera_preview_cm7. Cambiar el nombre relacionado camera_preview a face_rec para el nuevo exampel.
- Copie el custom.c y custom.c actualizado anteriormente. h al nuevo software de proyecto GUI Guider.
- Abra el nuevo proyecto face_rec en GUI Guider. Actualice como se muestra a continuación:
- Agregue el nuevo botón denominado Eliminar usuario. Agregue la bandera Oculto para que el botón quede oculto cuando se inicie la aplicación GUI.
- Agregue la línea de código para llamar a la API gui_event_face_rec_action() con un parámetro de ID de evento diferente en el activador "Liberado" en la Configuración de eventos de todos los botones Registro, Reconocimiento y Eliminar usuario para activar los eventos de registro facial, reconocimiento facial y eliminación de usuario. La Figura 8 muestra el código para el evento del botón Registro:
- Actualice el código generado desde GUI Guider al proyecto MCUXpresso.
- Reemplace el contenido excepto las imágenes de la carpeta en la carpeta generada por el SW del proyecto MCUXpresso con las correspondientes en la carpeta generada por el SW del proyecto GUI Guider.
Nota: Para más detalles sobre las modificaciones introducidas anteriormente, consulte el examparchivo de software en https://mcuxpresso.nxp.com/appcodehub.
Verificaciones con el exampel proyecto
para conseguir al exampPara obtener el paquete de software que contiene los recursos y herramientas para esta nota de aplicación, visite: https://mcuxpresso.nxp.com/appcodehub. abre el exampel proyecto en MCUXpresso IDE. Construya y programe el .axf file a la dirección 0x30000000 y programar el contenedor de recursos file cámara_preview_resource.bin a la dirección 0x30800000.
El reconocimiento facial LVGL GUI exampEl archivo funciona normalmente de la siguiente manera:
- Preview: Con el encendido, las transmisiones de video capturadas por la cámara se muestran en el área específica de la cámara previa.view en la pantalla GUI. La etiqueta de estado muestra "Preview…”. Para obtener más información, consulte la Figura 3. El botón Eliminar usuario está oculto. Al hacer clic en el área fuera de los botones e imágenes, se muestra la preview indique lo anterior después de que finalice la acción de registro o reconocimiento facial.
- Registro:
- Tarta de queso: Cuando se hace clic en el botón Registro, comienza el registro de rostros. La etiqueta de estado cambia para mostrar "Registro...", el rectángulo de la guía facial se muestra azul y la barra de progreso comienza a mostrar el progreso. Asegúrese de que la cara del usuario se muestre en el rectángulo guía de cara azul para el registro.
- éxito: La etiqueta de estado muestra "Registro...OK" y el número de identificación del usuario registrado, el rectángulo de la guía de rostros se vuelve rojo si el registro de rostros se realiza correctamente antes de que el progreso se muestre completo en la barra.
- Fallo -> Tiempo de espera: la etiqueta de estado muestra "Registro...Tiempo de espera" si el registro de la cara aún falla cuando el progreso se muestra completo en la barra.
- Fallo -> Duplicación: la etiqueta de estado muestra "Registro...Error", el rectángulo de la guía de rostros se vuelve verde si el rostro registrado se reconoce antes de que el progreso se muestre completo en la barra.
- econocimiento:
- Inicio: cuando se hace clic en el botón Reconocimiento, se inicia el reconocimiento facial. La etiqueta de estado cambia para mostrar "Reconocimiento...", el rectángulo de la guía facial se muestra azul y la barra de progreso comienza a mostrar el progreso. Asegúrese de que la cara del usuario se muestre en el rectángulo guía de cara azul para el registro.
- éxito: La etiqueta de estado muestra "Reconocimiento...OK" y el número de identificación del usuario reconocido, el rectángulo de la guía facial se vuelve verde si el reconocimiento facial se realiza correctamente antes de que el progreso se muestre completo en la barra. En ese momento aparece el botón Eliminar Usuario. Significa que se permite eliminar al usuario sólo cuando es reconocido.
- fracaso: La etiqueta de estado muestra "Reconocimiento...Tiempo de espera" si el reconocimiento facial aún falla cuando el progreso se muestra completo en la barra.
- Eliminar usuario: Cuando se hace clic en el botón "Eliminar usuario", después de que el reconocimiento facial sea exitoso, la etiqueta de estado cambia para mostrar "Eliminar usuario...OK" con el rectángulo de la guía facial volviéndose azul y el progreso mostrado completo en la barra. El botón Eliminar Usuario vuelve a estar oculto. La cara/usuario reconocido se elimina de la base de datos. Significa que esta cara/usuario no se puede reconocer hasta que se registre nuevamente.
Nota sobre el código fuente en el documento
ExampEl código que se muestra en este documento tiene los siguientes derechos de autor y licencia BSD-3-Clause:
Copyright 2024 NXP Se permite la redistribución y el uso en formato fuente y binario, con o sin modificaciones, siempre que se cumplan las siguientes condiciones:
- Las redistribuciones del código fuente deben conservar el aviso de copyright anterior, esta lista de condiciones y la siguiente exención de responsabilidad.
- Las redistribuciones en forma binaria deben reproducir el aviso de derechos de autor anterior, esta lista de condiciones y el siguiente descargo de responsabilidad en la documentación y/u otros materiales deben proporcionarse con la distribución.
- Ni el nombre del titular de los derechos de autor ni los nombres de sus colaboradores pueden usarse para respaldar o promocionar productos derivados de este software sin un permiso previo específico por escrito.
ESTE SOFTWARE ES PROPORCIONADO POR LOS TITULARES DE LOS DERECHOS DE AUTOR Y COLABORADORES “TAL CUAL” Y SE RECHAZAN TODAS LAS GARANTÍAS EXPRESAS O IMPLÍCITAS, INCLUYENDO, ENTRE OTRAS, LAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD E IDONEIDAD PARA UN PROPÓSITO PARTICULAR. EN NINGÚN CASO EL TITULAR DE LOS DERECHOS DE AUTOR O LOS COLABORADORES SERÁN RESPONSABLES DE NINGÚN DAÑO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, EJEMPLAR O CONSECUENTE (INCLUIDOS, ENTRE OTROS, LA OBTENCIÓN DE BIENES O SERVICIOS SUSTITUTOS; PÉRDIDA DE USO, DATOS O BENEFICIOS; O INTERRUPCIÓN DEL NEGOCIO) CAUSADO COMO SEA Y BAJO CUALQUIER TEORÍA DE RESPONSABILIDAD, YA SEA POR CONTRATO, RESPONSABILIDAD ESTRICTA O AGRAVIO (INCLUIDA LA NEGLIGENCIA O DE OTRO MODO) QUE SURJA DE CUALQUIER FORMA DEL USO DE ESTE SOFTWARE, INCLUSO SI SE HA ADVERTIDO DE LA POSIBILIDAD DE TAL DAÑO.
Historial de revisiones
Información legal
Definiciones
Borrador: un estado de borrador en un documento indica que el contenido aún se encuentra bajo revisión interna.view y está sujeto a aprobación formal, lo que puede dar lugar a modificaciones o adiciones. NXP Semiconductors no ofrece declaraciones ni garantías en cuanto a la precisión o integridad de la información incluida en una versión preliminar de un documento y no tendrá responsabilidad por las consecuencias del uso de dicha información.
Descargo de responsabilidad
- Garantía limitada y responsabilidad — Se cree que la información de este documento es precisa y confiable. Sin embargo, NXP Semiconductors no ofrece ninguna representación ni garantía, expresa o implícita, en cuanto a la exactitud o integridad de dicha información y no será responsable de las consecuencias del uso de dicha información. NXP Semiconductors no asume ninguna responsabilidad por el contenido de este documento si lo proporciona una fuente de información externa a NXP Semiconductors.
En ningún caso, NXP Semiconductors será responsable de daños indirectos, incidentales, punitivos, especiales o consecuentes (incluidos, entre otros, la pérdida de ganancias, la pérdida de ahorros, la interrupción del negocio, los costos relacionados con la eliminación o el reemplazo de cualquier producto o cargos de reelaboración) ya sea o no tales daños se basan en agravio (incluyendo negligencia), garantía, incumplimiento de contrato o cualquier otra teoría legal.
Sin perjuicio de los daños en los que pueda incurrir el cliente por cualquier motivo, la responsabilidad total y acumulativa de NXP Semiconductors hacia el cliente por los productos descritos en este documento se limitará de acuerdo con los Términos y condiciones de venta comercial de NXP Semiconductors. - Derecho a realizar cambios — NXP Semiconductors se reserva el derecho de realizar cambios en la información publicada en este documento, incluidas, entre otras, especificaciones y descripciones de productos, en cualquier momento y sin previo aviso. Este documento sustituye y reemplaza toda la información suministrada antes de la publicación del mismo.
- Idoneidad para el uso — Los productos de NXP Semiconductors no están diseñados, autorizados o garantizados para ser adecuados para su uso en sistemas o equipos de soporte vital, críticos para la vida o críticos para la seguridad, ni en aplicaciones donde se puede esperar razonablemente que la falla o el mal funcionamiento de un producto de NXP Semiconductors resulte en lesiones personales, la muerte o daños graves a la propiedad o al medio ambiente. NXP Semiconductors y sus proveedores no aceptan ninguna responsabilidad por la inclusión y/o el uso de productos de NXP Semiconductors en dichos equipos o aplicaciones y, por lo tanto, dicha inclusión y/o uso es por cuenta y riesgo del cliente.
- Aplicaciones — Las aplicaciones que se describen en este documento para cualquiera de estos productos son solo para fines ilustrativos. NXP Semiconductors no representa ni garantiza que dichas aplicaciones sean adecuadas para el uso especificado sin más pruebas o modificaciones.
Los clientes son responsables del diseño y el funcionamiento de sus aplicaciones y productos que utilizan productos de NXP Semiconductors, y NXP Semiconductors no acepta ninguna responsabilidad por la asistencia con las aplicaciones o el diseño de productos del cliente. Es responsabilidad exclusiva del cliente determinar si el producto de NXP Semiconductors es adecuado y apto para las aplicaciones y los productos planificados del cliente, así como para la aplicación y el uso planificados de los clientes externos del cliente. Los clientes deben proporcionar protecciones operativas y de diseño adecuadas para minimizar los riesgos asociados con sus aplicaciones y productos. NXP Semiconductors no acepta ninguna responsabilidad relacionada con ningún defecto, daño, costo o problema que se base en cualquier debilidad o defecto en las aplicaciones o productos del cliente, o la aplicación o el uso por parte de los clientes externos del cliente. El cliente es responsable de realizar todas las pruebas necesarias para las aplicaciones y los productos del cliente utilizando los productos de NXP Semiconductors para evitar un incumplimiento de las aplicaciones y los productos o de la aplicación o el uso por parte de los clientes externos del cliente. NXP no acepta ninguna responsabilidad a este respecto. - Términos y condiciones de venta comercial — Los productos de NXP Semiconductors se venden sujetos a los términos y condiciones generales de venta comercial, publicados en https://www.nxp.com/profile/términos, a menos que se acuerde lo contrario en un acuerdo individual válido por escrito. En caso de que se celebre un acuerdo individual, solo se aplicarán los términos y condiciones del acuerdo respectivo. NXP Semiconductors se opone expresamente a la aplicación de los términos y condiciones generales del cliente con respecto a la compra de productos de NXP Semiconductors por parte del cliente.
- Control de exportación — Este documento, así como los artículos descritos en él, pueden estar sujetos a las normas de control de exportaciones. La exportación puede requerir una autorización previa de las autoridades competentes.
- Idoneidad para su uso en productos calificados no automotrices — A menos que este documento indique expresamente que este producto específico de NXP Semiconductors está calificado para automóviles, el producto no es adecuado para uso automotriz. No está calificado ni probado de acuerdo con los requisitos de aplicación o pruebas automotrices. NXP Semiconductors no acepta ninguna responsabilidad por la inclusión y/o el uso de productos no calificados para automóviles en equipos o aplicaciones automotrices.
En el caso de que el cliente utilice el producto para diseño y uso en aplicaciones automotrices según especificaciones y estándares automotrices, el cliente (a) deberá usar el producto sin la garantía de NXP Semiconductors del producto para dichas aplicaciones, usos y especificaciones automotrices, y ( b) siempre que el cliente utilice el producto para aplicaciones automotrices más allá de las especificaciones de NXP Semiconductors, dicho uso será exclusivamente bajo el propio riesgo del cliente, y (c) el cliente indemnizará completamente a NXP Semiconductors por cualquier responsabilidad, daños o reclamos de productos fallidos que resulten del diseño del cliente y el uso de el producto para aplicaciones automotrices más allá de la garantía estándar de NXP Semiconductors y las especificaciones del producto de NXP Semiconductors. - Traducciones — Una versión no inglesa (traducida) de un documento, incluida la información legal en ese documento, es solo para referencia. La versión en inglés prevalecerá en caso de discrepancia entre las versiones traducidas y en inglés.
- Seguridad — El cliente comprende que todos los productos NXP pueden estar sujetos a vulnerabilidades no identificadas o pueden admitir estándares o especificaciones de seguridad establecidos con limitaciones conocidas. El cliente es responsable del diseño y funcionamiento de sus aplicaciones y productos a lo largo de sus ciclos de vida para reducir el efecto de estas vulnerabilidades en las aplicaciones y productos del cliente. La responsabilidad del cliente también se extiende a otras tecnologías abiertas y/o patentadas compatibles con los productos NXP para su uso en las aplicaciones del cliente. NXP no acepta ninguna responsabilidad por ninguna vulnerabilidad. El cliente debe verificar regularmente las actualizaciones de seguridad de NXP y realizar un seguimiento adecuado. El cliente seleccionará los productos con características de seguridad que mejor cumplan con las reglas, regulaciones y estándares de la aplicación prevista y tomará las decisiones de diseño finales con respecto a sus productos y es el único responsable del cumplimiento de todos los requisitos legales, reglamentarios y relacionados con la seguridad con respecto a sus productos, independientemente de cualquier información o soporte que pueda ser proporcionado por NXP.
NXP tiene un Equipo de respuesta a incidentes de seguridad de productos (PSIRT) (accesible en PSIRT@nxp.com) que administra la investigación, la generación de informes y el lanzamiento de soluciones para las vulnerabilidades de seguridad de los productos de NXP.
NXP BV: NXP BV no es una empresa operativa y no distribuye ni vende productos.
Marcas comerciales
Aviso: Todas las marcas, nombres de productos, nombres de servicios y marcas comerciales a las que se hace referencia son propiedad de sus respectivos dueños.
NXP — La marca denominativa y el logotipo son marcas comerciales de NXP BV
AMBA, Arm, Arm7, Arm7TDMI, Arm9, Arm11, Artisan, big.LITTLE, Cordio, CoreLink, CoreSight, Cortex, DesignStart, DynamIQ, Jazelle, Keil, Mali, Mbed, Mbed habilitado, NEON, POP, RealView, SecurCore, Socrates, Thumb, TrustZone, ULINK, ULINK2, ULINK-ME, ULINK-PLUS, ULINKpro, μVision, Versatile: son marcas comerciales y/o marcas comerciales registradas de Arm Limited (o sus subsidiarias o afiliadas) en EE. UU. y/o en otra parte. La tecnología relacionada puede estar protegida por alguna o todas las patentes, derechos de autor, diseños y secretos comerciales. Reservados todos los derechos.
- i.MX— es una marca registrada de NXP BV
- J-Link — es una marca comercial de SEGGER Microcontroller GmbH.
Microsoft, Azure y ThreadX son marcas comerciales del grupo de empresas Microsoft.
Tenga en cuenta que en la sección "Información legal" se han incluido avisos importantes sobre este documento y los productos descritos en él.
© 2024 NXP BV
Para obtener más información, visite: https://www.nxp.com
- Fecha de lanzamiento: 19 de abril de 2024
- Identificador de documento: AN14263
Preguntas frecuentes
P: ¿Cuál es el objetivo principal de este producto?
R: El objetivo principal es habilitar la función de reconocimiento facial utilizando un modelo de algoritmo de visión AI&ML con una GUI LVGL simple.amparchivo en la placa SLN-TLHMI-IOT.
P: ¿Cómo pueden beneficiarse los desarrolladores de esta nota de aplicación?
R: Los desarrolladores pueden aprender cómo implementar el reconocimiento facial en el marco paso a paso utilizando el ejemplo proporcionado.ampArchivo y comprensión de los administradores de dispositivos, dispositivos HAL y mecanismos de eventos involucrados.
Documentos / Recursos
![]() |
NXP AN14263 Implementar reconocimiento facial LVGL GUI en Framewor [pdf] Guía del usuario AN14263 Implementar reconocimiento facial LVGL GUI en Framewor, AN14263, Implementar reconocimiento facial LVGL GUI en Framewor, Reconocimiento facial LVGL GUI en Framewor, Reconocimiento facial en Framewor, Reconocimiento en Framewor, Framewor |