NXP-Logo

NXP AN14263 Implementiert die LVGL-GUI-Gesichtserkennung auf Framewor

NXP-AN14263-Implementierung-LVGL-GUI-Gesichtserkennung-auf-Framework-Produkt

Produktinformationen

Technische Daten

  • Produktname: LVGL GUI Gesichtserkennung auf Framework
  • Dokumentrevision: 1. – 19. April 2024
  • Schlüsselwörter: Gesichtserkennung, LVGL GUI, Framework

Anweisungen zur Produktverwendung

  1. Überview
    Dieses Produkt ermöglicht ein AI&ML-Vision-Algorithmus-Modell für die Gesichtserkennung auf einem Framework, um die Gesichtserkennungsfunktion mit einer einfachen LVGL-GUI zu implementieren.ample auf der SLN-TLHMI-IOT-Karte.
  2. Rahmen vorbeiview
    Die Lösungssoftware ist um die Framework-Architektur herum konzipiert, die Gerätemanager umfasst, die für die Verwaltung der Geräte zuständig sind, HAL-Geräte zum Abstrahieren der zugrunde liegenden Details und Ereignisse für die Kommunikation zwischen verschiedenen Geräten.
  3. Merkmale
    Das Produkt ermöglicht die Implementierung einer Gesichtserkennungsfunktion über die Kameravoreinstellungview auf dem GUI-Bildschirm mit Schaltflächen zum Auslösen der Gesichtsregistrierung, -erkennung und -entfernung. Registrierte Gesichtsdaten werden über einen file System.
  4. Inhalt der Anwendungsnotiz
    Der Anwendungshinweis stellt einen LVGL-GUI-Bildschirm mit Kameravoreinstellung vorview und Schaltflächen für gesichtsbezogene Aktionen. Es hilft Entwicklern, das Framework zu verstehen und die Gesichtserkennung mithilfe des bereitgestellten Beispiels zu implementierenample.

Überview

NXP hat ein Lösungsentwicklungskit namens SLN-TLHMI-IOT auf den Markt gebracht, das sich auf intelligente HMI-Anwendungen konzentriert. Es ermöglicht eine intelligente HMI mit ML-Vision, Sprach- und Grafik-Benutzeroberfläche, implementiert auf einer NXP i.MX RT117H MCU. Basierend auf dem SDK basiert die Lösungssoftware auf einem Design namens Framework, das flexible Designs und die Anpassung von Bild- und Sprachfunktionen unterstützt. Um den Benutzern eine bessere Nutzung der Softwareplattform zu erleichtern, werden einige grundlegende Dokumente bereitgestellt, zample, das Benutzerhandbuch zur Softwareentwicklung. Der Leitfaden stellt das grundlegende Softwaredesign und die Architektur der Anwendungen vor und deckt alle Komponenten der Lösung ab, einschließlich des Frameworks, um den Entwicklern zu helfen, ihre Anwendungen einfacher und effizienter mit dem SLN-TLHMI-IOT zu implementieren.
Weitere Einzelheiten zur Lösung und relevante Dokumente finden Sie unter web Seite der NXP EdgeReady Smart HMI-Lösung basierend auf i.MX RT117H mit ML Vision, Sprache und grafischer Benutzeroberfläche. Allerdings ist es für die Entwickler immer noch nicht so einfach, ihre smarten HMI-Anwendungen anhand dieser Basisleitfäden umzusetzen. Eine Reihe von Anwendungshinweisen ist geplant, um die Entwicklung des Frameworks Schritt für Schritt zu untersuchen. Dieser Anwendungshinweis basiert auf Implement LVGL GUI Camera Preview on Framework (Dokument AN14147). In dieser Anwendungsnotiz wird beschrieben, wie das AI&ML-Vision-Algorithmusmodell für die Gesichtserkennung auf dem Framework aktiviert wird, um die Gesichtserkennungsfunktion über die Kameravoreinstellung zu implementieren.view auf dem GUI-Bildschirm mit einer einfachen LVGL-GUI, zample auf der SLN-TLHMI-IOT-Karte. In der Bewerbungsnotiz ist der Example präsentiert einen LVGL-GUI-Bildschirm mit einer Kameravoreinstellungview und einige Schaltflächen zum Auslösen der Gesichtsregistrierung, -erkennung und -entfernung. Die registrierten Gesichtsdaten werden über einen kleinen Flash-Speicher gespeichert file System.

Auf allgemeiner Ebene enthält der Anwendungshinweis die folgenden Inhalte:

  • Aktivieren Sie die Gesichtserkennungsfunktion im Framework.
  • Fügen Sie dem Framework Unterstützung für Gesichtsdatenbanken hinzu über file System auf Flash.
  • Implementieren Sie die LVGL-GUI-App. Durch die obigen Einführungen hilft dieses Dokument den Entwicklern dabei:
  • Verstehen Sie das Framework und die intelligente HMI-Lösungssoftware besser.
  • Entwickeln Sie Ihre AI&ML-Gesichtserkennung auf einem Framework mit der LVGL-GUI-App.

Rahmen vorbeiview
Die Lösungssoftware basiert hauptsächlich auf der Verwendung der Framework-Architektur, die aus mehreren verschiedenen Teilen besteht:

  • Gerätemanager – der Kernteil
  • Hardware Abstraction Layer (HAL)-Geräte
  • Nachrichten/Ereignisse

Wie in Abbildung 1 dargestellt, ist das Overview Der Mechanismus des Frameworks ist:

Gerätemanager sind für die Verwaltung der vom System verwendeten Geräte verantwortlich. Jeder Gerätetyp (Eingabe, Ausgabe usw.) hat seinen eigenen typspezifischen Gerätemanager. Wenn ein Gerätemanager gestartet wird, nachdem die Geräte bei ihm registriert wurden, wartet er und prüft eine Nachricht, um Daten an die Geräte und andere Manager zu übertragen, nachdem die registrierten Geräte initialisiert und gestartet wurden. Die HAL-Geräte werden über den Treibercode der unteren Ebene geschrieben, was zur besseren Verständlichkeit des Codes beiträgt, indem viele der zugrunde liegenden Details abstrahiert werden.

Ereignisse sind ein Mittel, mit dem Informationen zwischen verschiedenen Geräten über ihre Manager kommuniziert werden. Wenn ein Ereignis ausgelöst wird, übermittelt das Gerät, das das Ereignis zuerst empfangen hat, dieses Ereignis an seinen Manager und benachrichtigt dann wiederum andere Manager, die das Ereignis empfangen sollen.

NXP-AN14263-Implementierung der LVGL-GUI-Gesichtserkennung auf Framewor-fig- (1)

Der architektonische Entwurf des Rahmenwerks konzentrierte sich auf drei Hauptziele:

  1. Benutzerfreundlichkeit
  2. Flexibilität/Portabilität
  3. Leistung

Das Framework wurde mit dem Ziel entwickelt, die Markteinführungszeit für Bildverarbeitungs- und andere maschinelle Lernanwendungen zu verkürzen. Um eine schnelle Markteinführung zu gewährleisten, ist es wichtig, dass die Software selbst leicht zu verstehen und zu ändern ist. Unter Berücksichtigung dieses Ziels lässt sich die Architektur des Frameworks leicht ändern, ohne dass es zu Einschränkungen kommt und ohne dass dies auf Kosten der Leistung geht.
Weitere Einzelheiten zum Framework finden Sie im Smart HMI Software Development User Guide (Dokument MCU-SMHMI-SDUG).

Leichte und vielseitige Grafikbibliothek (LVGL)
LVGL (Light and Versatile Graphics Library) ist eine kostenlose Open-Source-Grafikbibliothek, die alles bietet, was Sie zum Erstellen einer eingebetteten GUI mit benutzerfreundlichen grafischen Elementen, schönen visuellen Effekten und geringem Speicherbedarf benötigen.

GUI-Guider
GUI Guider ist ein benutzerfreundliches Entwicklungstool für grafische Benutzeroberflächen von NXP, das die schnelle Entwicklung hochwertiger Displays mit der Open-Source-Grafikbibliothek LVGL ermöglicht. Der Drag-and-Drop-Editor von GUI Guider erleichtert die Verwendung vieler Funktionen von LVGL wie Widgets, Animationen und Stile, um eine GUI mit minimalem oder gar keinem Programmieraufwand zu erstellen.

Mit einem Mausklick können Sie Ihre Anwendung in einer simulierten Umgebung ausführen oder in ein Zielprojekt exportieren. Der von GUI Guider generierte Code kann problemlos zu Ihrem Projekt hinzugefügt werden, was den Entwicklungsprozess beschleunigt und Ihnen ermöglicht, Ihrer Anwendung nahtlos eine eingebettete Benutzeroberfläche hinzuzufügen. GUI Guider kann kostenlos mit den Allzweck- und Crossover-MCUs von NXP verwendet werden und enthält integrierte Projektvorlagen für mehrere unterstützte Plattformen. Weitere Informationen zu LVGL und GUI-Entwicklung mit GUI Guider finden Sie unter Light and Versatile Graphics Library und GUI Guider.

Entwicklungsumgebung

Bereiten Sie zunächst die Hardware- und Softwareumgebung für die Implementierung des Ex vor und richten Sie sie einample auf dem Rahmen.

Hardwareumgebung
Die Hardwareumgebung ist für die Überprüfung des Ex eingerichtetampauf:

  • Das intelligente HMI-Entwicklungskit basierend auf NXP i.MX RT117H (das SLN_TLHMI_IOT-Kit)
  • SEGGER J-Link mit einem 9-Pin-Cortex-M-Adapter und V7.84a oder einer neueren Version des Treibers

Software-Umgebung
Die Softwareumgebung ist für die Entwicklung des Ex eingerichtetampauf:

  • MCUXpresso IDE V11.7.0
  • GUI Guider V1.6.1-GA
  • lvgl_gui_camera_preview_cm7 – exampDateicode der zweiten Anwendungsnotiz als Basissoftware der Entwicklung. Einzelheiten finden Sie unter https://mcuxpresso.nxp.com/appcodehub.
  • RT1170 SDK V2.13.0 – als Coderessource für die Entwicklung.
  • SLN-TLHMI-IOT-Software V1.1.2 – Smart-HMI-Quellcode, veröffentlicht im NXP GitHub-Repository als Coderessource für die Entwicklung. Einzelheiten finden Sie unter: GitHub – NXP/mcu-smhmi in Version 1.1.2

Einzelheiten zum Erwerb und zur Einrichtung der Softwareumgebung finden Sie unter: Erste Schritte mit SLN-TLHMI-IOT.

Visionsarchitektur auf Framework

Die Vision-Architektur des Frameworks ist in Abbildung 2 dargestellt. Der Vision-Algorithmus HAL (OASIS_HAL) verfügt über die folgenden Prozesse:

  • Führen Sie eine Gesichtsregistrierung und -erkennung über das AI&ML-Vision-Algorithmusmodell durch, nachdem Sie die entsprechenden Ereignisse von der Ausgabe-UI-HAL erhalten haben. Benachrichtigen Sie die Inferenzergebnisse aus dem Algorithmusmodell an die Ausgabe-UI-HAL.
  • Zugriff (Hinzufügen, Löschen…) auf die Gesichtsmerkmaldatenbank basierend auf den kleinen file System durch Aufrufen der APIs von FaceDB HAL nach Empfang der zugehörigen Ereignisse von der Ausgabe-UI-HAL.
  • Fordern Sie bei der Gesichtsregistrierung und -erkennung das Videobild der Kamera vom Kamera-HAL an.

NXP-AN14263-Implementierung der LVGL-GUI-Gesichtserkennung auf Framewor-fig- (3)

Implementieren Sie die Gesichtserkennung im Framework

Die LVGL-GUI-Gesichtserkennung example (der Example wird später bereitgestellt) auf dem Framework wird basierend auf dem Ex implementiertampDie Codes von Implement LVGL GUI Camera Preview zum Framework (Dokument AN14147).

Für die Demonstration der Gesichtserkennung im Example, die Grundfunktion der GUI-App (siehe Hauptbildschirm in Abbildung 3) ist wie folgt aufgebaut:

  • Die GUI-App löst das Ereignis der Gesichtsregistrierung oder -erkennung an den Ausgabe-UI-HAL aus, wenn auf die Schaltfläche „Registrierung“ oder „Erkennung“ geklickt wird. Und der Ausgabe-UI-HAL meldet das Ereignis des Hinzufügens eines Benutzers zum Vision-Algo-HAL, nachdem die Gesichtsregistrierung erfolgreich war.
  • Die GUI-App löst das Ereignis des Löschens eines Benutzers in der Ausgabe-UI-HAL aus, wenn auf die Schaltfläche „Benutzer löschen“ geklickt wird, nachdem das Gesicht des Benutzers erkannt wurde.
  • Die GUI-App löst das Ereignis aus, den Oasis-Algorithmus zu stoppen, der zum Ausgabe-UI-HAL ausgeführt wird, wenn auf den Bildschirm außerhalb der Schaltflächen und Bilder geklickt wird.

NXP-AN14263-Implementierung der LVGL-GUI-Gesichtserkennung auf Framewor-fig- (10)

Bereiten Sie das Softwarepaket für die Implementierung des Ex vorample.

  • Klonen Sie die Basissoftware lvgl_gui_camera_preview_cm7. Ändern Sie den Projektnamen und den Hauptnamen fileName zu lvgl_gui_face_rec_cm7.
  • Das Framework muss in der Software aktualisiert werden, da die Quellcodes für den Framework-Kern ab Version 1.1.2 auf GitHub öffentlich zugänglich sind.
  • Ersetzen Sie den Framework-Ordner durch die Kopie von V1.1.2 von GitHub, mit Ausnahme von files fwk_log.h und fwk_common.h unter inc\, da sie für die Reihe der Anwendungshinweise geändert wurden. Die Operationen sind in Abbildung 4 dargestellt:NXP-AN14263-Implementierung der LVGL-GUI-Gesichtserkennung auf Framewor-fig- (11)
  • Löschen Sie den Ordner „framework_cm7“ unter der Gruppe „libs“ und entfernen Sie die Bibliothek „framework_cm7“ und ihren Suchpfad, der in „Projekt“ > „Eigenschaften“ > „C/C++ Build“ > „Einstellungen“ > „Tooleinstellungen“ > „MCU C++ Linker“ > „Bibliotheken“ konfiguriert ist, da der Quellcode des Kerns bereitgestellt wird.

Aktivieren Sie die Gesichtserkennungsfunktion im Framework
Die Gesichtserkennungsfunktion basiert auf dem ML-Vision-Algorithmusmodell, das als statische Bibliothek bereitgestellt wird – eine Oasis-Lite-Runtime-Bibliothek von NXP. Die Bibliothek ist eine kleine, hocheffiziente, angepasste und optimierte KI-Bibliothek. Das Modell umfasst Gesichtserkennung, Gesichtserkennung, Glaserkennung und Lebendigkeitserkennung. Es bietet hauptsächlich die API OASISLT_run_extended(), um die Gesichtserkennungspipeline auszuführen, während die Ergebnisse durch Ereignisrückrufe an den Anrufer aktualisiert werden, und um Gesichter in der Datenbank durch die Gesichtsdatenbankrückrufe hinzuzufügen/aktualisieren/löschen, nachdem die Quellrahmeninformationen, Rückrufe und der von der Bibliothek verwendete Speicherpool angegeben wurden, indem bei der Initialisierung eine weitere API OASISLT_init() aufgerufen wurde. Der Aufruf der APIs und die Rückruffunktionen werden im Vision-Algorithmus HAL des Frameworks implementiert.

Vision-Algo-Modellbibliothek hinzufügen

  1. Kopieren Sie den Ordner oasis, der die Bibliothek und den zugehörigen Header enthält file von smart HMI\coffee_machine\cm7\libs\ in den Ordner libs des Example SW.
  2. Fügen Sie den Suchpfad des Headers hinzu file in Projekt > Eigenschaften > C/C++ Build > Einstellungen > Tool-Einstellungen > MCU C-Compiler > Includes und MCU C++-Compiler > Includes: „${workspace_loc:/${ProjName}/libs/oasis/include}“
  3. Fügen Sie die Bibliothek und ihren Suchpfad unter Projekt > Eigenschaften > C/C++ Build > Einstellungen > MCU C+ + Linker > Bibliotheken hinzu: liboasis_lite2D_DEFAULT_117f_ae.a „${workspace_loc:/${ProjName}/libs/oasis}“ und die Makrodefinition zu Aktivieren Sie die Funktion unter Projekt > Eigenschaften > C/C++ Build > Einstellungen > Tooleinstellungen > MCU C-Compiler > Präprozessor und MCU C++-Compiler > Präprozessor: SMART_TLHMI_2D

Vision-Algorithmus HAL aktivieren
Der Vision-Algo-HAL steuert das Vision-Algo-Modell zum Funktionieren und antwortet mit den Ergebnissen auf den UI-Ausgabe-HAL, nachdem er die Ereignisse von ihm empfangen hat.

Um es zu aktivieren, klonen Sie den vorhandenen ähnlichen HAL-Treiber file wobei die folgenden Funktionen implementiert sind:

  • Implementieren Sie die Rückrufe von Gesichtsdatenbankoperationen und der Ereignisbehandlung.
  • Bringen Sie den Vision-Algorithmus zum Laufen, indem Sie die APIs der Oasis-Bibliothek aufrufen.
  • Greifen Sie auf die Benutzergesichtsdatenbank und die App-Datenbank zu (im Beispiel nicht erforderlich).ample).
  • Empfangen Sie Ereignisse von der Ausgabe-Benutzeroberfläche HAL und senden Sie Ergebnisse an diese.

Die Hauptarbeiten zur Implementierung des HAL für den ExampSie sind:

  • Klonen Sie den vorhandenen ähnlichen HAL-Treiber file und ändern Sie die zugehörigen Namen.
  • Entfernen Sie die Codes, die mit den App-Datenvorgängen in Zusammenhang stehen.
  • Aktualisieren Sie die Definitionen und Funktionen für die Verarbeitung der Ereignisse aus der Ausgabe-UI-HAL gemäß dem BeispielampDesign.
  • Fügen Sie die für die Oasis-Initialisierung erforderlichen Konfigurationen hinzu.

Die detaillierten Schritte sind wie folgt:

  1. Klonen Sie hal_vision_algo_oasis_coffeemachine.c. Ändere das fileName zu hal_vision_algo_oasis_guifacerec.c. Und ersetzen Sie alle Zeichenfolgen CoffeeMachine durch GUIFaceRec in der file.
  2. Entfernen Sie die Codes, die die Zeichenfolge „coffeedb“ (ohne Berücksichtigung der Groß-/Kleinschreibung) enthalten und sich auf die App-Datenbank beziehen, z. B.ample, #include hal_sln_coffeedb.h.
  3. Ändern Sie die Funktion HAL_VisionAlgoDev_OasisGUIFaceRec_InputNotify() zur Verarbeitung der Ereignisse aus der Ausgabe-UI-HAL.
    • Ändern Sie die Ereignisdefinition kEventFaceRecId_RegisterCoffeeSelection in kEventFaceRecId_RegisterUserFace und den Strukturstring regCoffeeSelection in regGUIFaceRec für die Ereignisbehandlung, um der Datenbank neue Gesichtsmerkmalsdaten hinzuzufügen.
    • Um den Standardprozess der Gesichtserkennungsaktionen im Beispiel anzuzeigenample, modifizieren Sie die Behandlung im Fall von kEventFaceRecID_OasisSetState mit den Definitionen der Zustände:
      • kOASISLiteState
      • Registrierung kOASISLiteState
      • Anerkennung kOASISLiteState
      • Gestoppt
  4. Fügen Sie die Definitionen der im obigen Schritt genannten Ereignisse hinzu und ändern Sie sie.
    • Kopieren Sie die Kopfzeile file smart_tlhmi_event_descriptor.h von smart HMI\coffee_machine \cm7\source\event_handlers\ in den Ordner source des Example SW. Aktualisieren Sie die file wie folgt:
    • Ändern Sie die Ereignisdefinition kEventFaceRecId_RegisterCoffeeSelection in kEventFaceRecId_RegisterUserFace im Enumerationstyp _event_smart_tlhmi_id und die Strukturzeichenfolge regCoffeeSelection in regGUIFaceRec in der Struktur _event_smart_tlhmi. Ändern Sie also die Struktur register_coffee_selection_event_t für regCoffeeSelection in register_gui_facerec_event_t.
    • Löschen Sie die sonstigen Inhalte der Kaffeemaschinen-App, zBample, die Codezeile über Stimme: #include „hal_event_descriptor_voice.h“.
    • Fügen Sie die Typen kOASISLiteState_Stopped und kOASISLiteState_Running zum Enumerationstyp oasis_lite_state_t in hal_vision_algo.h unter framework>hal>vision im Projekt wie folgt hinzu:
      typedef enum _oasis_lite_state {
      • kOASISLiteState
      • Wird ausgeführt, kOASISLiteState
      • Gestoppt, kOASISLiteState
      • Anerkennung,
      • kOASISLiteState
      • Registrierung, kOASISLiteState
      • Abmeldung, kOASISLiteState
      • RemoteRegistration, kOASISLiteState
      • Zählen
    • Verwenden Sie die oben aktualisierte Struktur oasis_lite_state_t, um die Struktur oasis_state_event_t in hal_event_descriptor_face_rec.h unter „framework>hal>vision“ im Projekt wie folgt zu verfeinern: typedef struct _oasis_state_event_t { oasis_lite_state_t state; } oasis_state_event_t;
  5. Ändern Sie alle kEventInfo_Remote in kEventInfo_Local, um Ereignisse vom Vision-Algo-HAL an andere HALs zu senden, die auf demselben Kern ausgeführt werden, da im Ex ein Einzelkern anstelle eines Doppelkerns verwendet wirdample.
  6. Fügen Sie die folgenden Konfigurationen für die Oasis-Initialisierung in OASISLT_init() hinzu und ändern Sie sie:
    • Fügen Sie die Makrodefinitionen und Speicherabschnitte für den Videorahmen in board_define.h hinzu: #define OASIS_RGB_FRAME_WIDTH 800
      • #define OASIS_RGB_FRAME_HEIGHT 600
      • #define OASIS_RGB_FRAME_SRC_FORMAT kPixelFormat_YUV1P444_RGB
      • #define OASIS_RGB_FRAME_BYTE_PER_PIXEL 3
      • #define AT_FB_SHMEM_SECTION_ALIGN(var, alignbytes) \
      • __attribute__((Abschnitt(“.bss.$fb_sh_mem,\”aw\”,%nobits @”))) var
      • __attribute__((aligned(alignbytes)))
    • Konfigurieren Sie die Speicherzuweisung zum obigen Speicherabschnitt fb_sh_mem unter „Projekt“ > „Eigenschaften“ > „C/C++ Build“ > „MCU-Einstellungen“ (siehe Abbildung 5):NXP-AN14263-Implementierung der LVGL-GUI-Gesichtserkennung auf Framewor-fig- (12)
    • Deklarieren Sie die globale Variable g_DTCOPBuf in lvgl_gui_face_rec_cm7.cpp: AT_NONCACHEABLE_SECTION_ALIGN_DTC (uint8_t g_DTCOPBuf[DTC_OPTIMIZE_BUFFER_SIZE], 4);
    • Fügen Sie weiterhin die in der obigen Variable verwendeten Definitionen hinzu:
    • Definieren Sie den obigen Abschnitt in board_define.h:
      • #define AT_NONCACHEABLE_SECTION_ALIGN_DTC(var, alignbytes) \
      • Attribut__((Abschnitt(“.bss.$SRAM_DTC_cm7,\”aw\”,%nobits @”))) var
      • Attribut__((ausgerichtet(alignbytes)))
    • Fügen Sie die Kopfzeile hinzu file hal_vision_algo.h enthält die Makrodefinition DTC_OPTIMIZE_BUFFER_SIZE in app_config.h, enthalten in lvgl_gui_face_rec_cm7.cpp.
  7. Setzen Sie die Variable s_debugOption auf „true“, um den Fortschrittsstatus der Gesichtserkennung anzuzeigen.
  8. Fügen Sie den Suchpfad des Headers hinzu files des Vision HAL unter Projekt > Eigenschaften > C/C++ Build > Einstellungen > Tool-Einstellungen > MCU C-Compiler > Includes und MCU C++-Compiler > Includes: „${workspace_loc:/${ProjName}/framework/hal/vision}“
  9. Fügen Sie die folgende Definition hinzu, um Vision Algo HAL in board_define.h zu aktivieren: #define ENABLE_VISIONALGO_DEV_Oasis_GUIFaceRec

Ausgabe-UI-HAL aktivieren
Der Ausgabe-UI-HAL benachrichtigt den Vision-Algorithmus HAL über die Ereignisse und reagiert auf die Inferenzergebnisse des Vision-Algorithmus HAL. Bei der GUI-App werden die Ereignisse grundsätzlich von der App ausgelöst und die Ergebnisse auf der App angezeigt.

Um es zu aktivieren, klonen Sie den vorhandenen ähnlichen HAL-Treiber file wobei im Allgemeinen die folgenden Funktionen implementiert sind:

  • Melden Sie Ereignisse zur Gesichtserkennung und zum Datenbankzugriff.
  • Implementieren Sie die Rückrufe für die GUI-App, um die Ereignisse auszulösen.
  • Behandeln Sie die Inferenzergebnisse aus dem Vision-Algo-Modul.
  • Zeigen Sie den Prozess und die Ergebnisse der Ereignisbehandlung auf der Benutzeroberfläche anhand des Fortschrittsbalkens an, der mit den Timern und dem Gesichtsführungsrechteck gesteuert wird.

Die Hauptarbeiten zur Implementierung des HAL für den ExampDie in diesem Dokument verwendeten Dateien sind:

  • Klonen Sie den vorhandenen ähnlichen HAL-Treiber file und ändern Sie die zugehörigen Namen.
  • Entfernen Sie die mit der App verbundenen Codes.
  • Aktualisieren Sie die Funktionen für die Ereignisbenachrichtigung und die Ergebnisantwort gemäßampDesign.
  • Fügen Sie die Rückrufe für die GUI-App hinzu, um die Ereignisse auszulösen.

Die detaillierten Schritte sind wie folgt:

  1. Klonen Sie hal_output_ui_coffee_machine.c. Ändern Sie die fileName zu hal_output_ui_guifacerec.c.
  2. Ersetzen Sie alle Zeichenfolgen CoffeeMachine durch GUIFaceRec in der file.
  3. Entfernen Sie die Codes für die App – Kaffeemaschine.
    • Entfernen Sie die Funktionen WakeUp() und _StandBy() und die zugehörigen Codes (suchen Sie ggf. in den Zeichenfolgen wake_up und standby danach).
    • Vorab entfernenview Modusereignisse, die verwandte Codes in HAL_OutputDev_UiGUIFaceRec_Input Notify() verarbeiten.
    • Entfernen Sie die Funktionen UI_xxx_Callback() und die Codes, die die Zeichenfolge gui_ und screen enthalten und sich auf die GUI der Kaffeemaschine beziehen, mit Ausnahme von gui_set_virtual_face() für das Preview -Modus-Funktion.
    • Entfernen Sie sämtliche Codes, die mit den Variablen s_IsWaitingAnotherSelection und s_IsWaitingRegisterSelection in Zusammenhang stehen und sich auf die Kaffeemaschinen-App beziehen.
    • Entfernen Sie die Codes für Stimme, Audio und Sprache. Zum Beispielampauf:
      • #include „hal_voice_algo_asr_local.h“,
      • #include „hal_event_descriptor_voice.h“
  4. Implementieren Sie für die Benachrichtigungen zu verschiedenen Ereignissen die neuen Funktionen _OutputManagerNotify(), _SetFaceRec(), _RegisterGUIFaceRec() und DeregisterGUIFaceRec(), indem Sie auf die Funktionen _StopFaceRec(), _RegisterCoffeeSelection() und DeregisterCoffeeSelection() verweisen, bevor Sie diese löschen.
    • _OutputManagerNotify() implementiert die grundlegende Ereignisausgabefunktion, um ein Ereignis an den Vision-Algorithmus HAL zu senden. Die folgenden Funktionen rufen es auf, um ihre eigenen Ereignisse zu senden.
    • _SetFaceRec() sendet das Ereignis kEventFaceRecID_OasisSetState, um den Vision-Algorithmus für die Gesichtsregistrierung und -erkennung auszulösen und den Algorithmus zu stoppen.
    • Die Funktion _RegisterGUIFaceRec() sendet das Ereignis kEventFaceRecId_RegisterGUIFaceRec, das in smart_tlhmi_event_descriptor.h definiert ist, um bei erfolgreicher Registrierung Gesichtsmerkmalsdaten zur Datenbank hinzuzufügen.
    • DeregisterGUIFaceRec() sendet das Ereignis kEventFaceRecID_DelUser, um die Gesichtsmerkmalsdaten aus der Datenbank zu löschen, wenn die Gesichtserkennung bestanden wird.
  5. Aktualisieren Sie die Codes, um die entsprechenden Aktionen auszuführen, einschließlich der Aktualisierung der GUI durch Aufrufen der APIs aus der LVGL-GUI-App für die Inferenzergebnisse der Gesichtsregistrierung und -erkennung in der Funktion _InferComplete_Vision() gemäß dem Beispielample's Design. Zum BeispielampWenn die Gesichtsregistrierung erfolgreich ist,
    • Stoppen Sie die Anzeige des Fortschritts, indem Sie _FaceRecProcess_Stop(); aufrufen.
    • Stoppen Sie die Gesichtsregistrierung, indem Sie _SetFaceRec(kOASISLiteState_Stopped) aufrufen.
    • Zeigen Sie das erfolgreiche Ergebnis auf der GUI an: gui_show_face_rec_result(kFaceRecResult_OK, s_UserId);
    • Registrieren Sie die Gesichtsdaten in der Datenbank: _RegisterUserFace(s_UserId);
  6. Fügen Sie UI-Rückruffunktionen hinzu, um die Ereignisse zu verarbeiten: preview, Gesichtsregistrierung, -erkennung und das Löschen von Benutzern, ausgelöst über die GUI. Zum Beispielample, der Rückruf zur Gesichtsregistrierung: void UI_Registration_Callback(){ _SetFaceRec(kOASISLiteState_Registration); _FaceRecProcess_Start(); }
    • Und fügen Sie die Funktionen _FaceRecProcess_Start() und _FaceRecProcess_Stop() hinzu, um den Fortschritt und Status der verschiedenen Ereignisse und Ergebnisse anzuzeigen.
    • Aktualisieren Sie die Timer-ISR-Rückruffunktion _SessionTimer_Callback(), um den Fall einer Zeitüberschreitung durch Aufruf von: gui_show_face_rec_result(kFaceRecResult_TimeOut, s_UserId); zu behandeln.
  7. Fügen Sie die folgenden Definitionen hinzu, um UI-Ausgabe-HAL in board_define.h zu aktivieren: #define ENABLE_OUTPUT_DEV_UiGUIFaceRec

Beachten:
Um die Gesichtserkennungsfunktion besser darzustellen, behalten Sie die Funktion bei, um den Prozess und die Ergebnisse der Gesichtserkennung in der Ausgabe-UI-HAL anzuzeigen. Die Funktion wird wie folgt beschrieben

  • Das Gesichtsführungsrechteck wird blau angezeigt und der Fortschrittsbalken zeigt den Fortschritt beim Starten der Gesichtsregistrierung oder -erkennung an.
  • Das Gesichtsführungsrechteck wird rot angezeigt, wenn die Gesichtsregistrierung erfolgreich war.
  • Das Gesichtsführungsrechteck wird grün angezeigt, wenn die Gesichtserkennung erfolgreich war.
  • Das Gesichtsführungsrechteck bleibt blau und der Fortschrittsbalken zeigt den vollständigen Fortschritt an, wenn die Aktion nach Ablauf des Timers nicht erfolgreich war. Beenden Sie an diesem Punkt die Gesichtsregistrierung oder -erkennung.

Der Fortschrittsbalken und das Gesichtsführungsrechteck werden als Symbole dargestellt, die in die Ressourcenbinärdatei integriert sind file in Flash programmiert werden. Die Zeiger auf die Symboldaten im SDRAM werden in der Funktion LoadIcons(APP_ICONS_BASE) eingerichtet, die bei der Initialisierung des Ausgabe-UI-HAL-Geräts im Ausgabe-UI-HAL aufgerufen wird. Es muss die Symbolunterstützung für die Funktion implementieren.

Implementieren Sie die Symbolunterstützung

  1. Erstellen Sie die Ressource, indem Sie die Symbole mit den in der LVGL-GUI-App verwendeten Bildern kombinieren:
    • Klonen Sie die Überschrift mit den vier Symbolen files process_bar_240x14.h, virtual_face_blue_420x426.h, virtual_face_green_420x426.h und virtual_face_red_420x426.h von smart HMI
      \coffee machine\resource\icons\ in den neuen Ordner icons unter dem Ressourcenordner des Example SW.
    • Fügen Sie den Suchpfad für die vier Symbole hinzu files in der camera_preview_resource.txt file im Ressourcenordner, z.Bample: Symbol ../Ressource/Icons/Prozessleiste_240x14.h
    • Führen Sie „camera_pre“ aus.view_resource_build.bat zum Erstellen der Bild- und Symbolressourcen zum Generieren der Bin file camera_preview_resource.bin und die Info file resources_information_table.txt (siehe Abbildung 6).NXP-AN14263-Implementierung der LVGL-GUI-Gesichtserkennung auf Framewor-fig- (13)
  2. Definieren Sie die Startadresse im SDRAM und die Größe der Icons in app_config.h. Die Adresse beginnt neben den Bildern der GUI-App. Die Größe wird in der Info generiert. file. #define APP_ICONS_BASE (APP_RES_SHMEM_BASE + APP_LVGL_IMGS_SIZE) #define APP_ICONS_SIZE 0x107c40
  3. Aktualisieren Sie die zugewiesene Größe des Speicherabschnitts mit dem Namen res_sh_mem auf 0x200000, indem Sie sie in app_config.h neu definieren: #define RES_SHMEM_TOTAL_SIZE 0x200000 und die entsprechende Einstellung in Projekt > Eigenschaften > C/C++-Build > MCU-Einstellungen.
  4. Addieren Sie die Icongröße zur Gesamtgröße der Ressource, die von Flash ins SDRAM geladen wird, in der Funktion APP_LoadResource() im Hauptfenster. file lvgl_gui_face_rec_cm7.cpp: memcpy((void *)APP_LVGL_IMGS_BASE, pLvglImages, APP_LVGL_IMGS_SIZE + APP_ICONS_SIZE);

Beachten: Um die Gesichtserkennungsfunktion zu vervollständigen, ist die Unterstützung der LVGL GUI-App erforderlich. Die UI-Rückruffunktionen in der Ausgabe-UI-HAL werden von der LVGL-GUI-App aufgerufen, um die Ereignisse vom UI-Bildschirm zu verarbeiten. Andererseits ruft die HAL-Ausgabe-Benutzeroberfläche die APIs der LVGL-GUI-App auf, um die Benutzeroberfläche zu aktualisieren und das Ergebnis und den Status anzuzeigen. Die Entwicklung der LVGL-GUI-App ist relativ unabhängig und wird in Abschnitt 4.3 vorgestellt.

4.1.5 Starten Sie HAL-Geräte und -Manager für die Gesichtserkennung
Der aktivierte Vision-Algo HAL und die UI-Ausgabe HAL und ihre Manager werden im Hauptmodus gestartet file
lvgl_gui_face_rec_cm7.cpp folgt den Konvertierungen der Entwicklung auf dem Framework wie folgt:

  1. Fügen Sie die Kopfzeile hinzu file bezogen auf die beiden HAL-Manager durch Hinzufügen der Codezeile:
    • #include „fwk_output_manager.h“
    • #include „fwk_vision_algo_manager.h“
  2. Deklarieren Sie die HAL-Geräte:
    • HAL_VALGO_DEV_DECLARE(OasisGUIFaceRec);
    • HAL_OUTPUT_DEV_DECLARE(UiGUIFaceRec);
  3. Registrieren Sie die HAL-Geräte:
    • HAL_VALGO_DEV_REGISTER(OasisGUIFaceRec, ret);
    • HAL_OUTPUT_DEV_REGISTER(UiGUIFaceRec, ret);
  4. Initialisieren Sie die Manager:
    • FWK_MANAGER_INIT(VisionAlgoManager, ret);
    • FWK_MANAGER_INIT(OutputManager, ret);
  5. Starten Sie die Manager:
    • FWK_MANAGER_START(VisionAlgoManager, VISION_ALGO_MANAGER_TASK_PRIORITY, ret);
    • FWK_MANAGER_START(OutputManager, OUTPUT_MANAGER_TASK_PRIORITY, ret);
  6. Definieren Sie die Priorität der Manageraufgaben:
    • #define VISION_ALGO_MANAGER_TASK_PRIORITY 3
    • #define OUTPUT_MANAGER_TASK_PRIORITY 1

Unterstützung für Gesichtsdatenbanken im Framework hinzufügen
Auf die registrierten Gesichtsmerkmalsdaten wird in der auf Flash gespeicherten Gesichtsdatenbank zugegriffen file System. Die Schritte zum Hinzufügen der Gesichtsdatenbankunterstützung werden unten beschrieben.

Treiber für Flash-Speicher hinzufügen
Kopieren Sie den FlexSPI-Treiber der Flash-Schnittstelle files fsl_flexspi.c und fsl_flexspi.h sowie der Datenverschlüsselungstreiber files fsl_caam.c und fsl_caam.h vom Pfad SDK_2_13_0_MIMXRT1170-EVK\devices\MIMRX1176\drivers\ zum Treiberordner des Example SW.

Fügen Sie Unterstützung auf Board-Ebene hinzu

  1. Fügen Sie die Definitionen von FlexSPI hinzu, die für das Flash-Gerät an Bord in board.h verwendet werden:
    • #define BOARD_FLEXSPI FLEXSPI1
    • #define BOARD_FLEXSPI_CLOCK kCLOCK_FlexSpi1
    • #define BOARD_FLEXSPI_AMBA_BASE FlexSPI1_AMBA_BASE
  2. Kopieren der Operatoren und Konfigurationen files des Flash-Geräts flexspi_nor_flash_ops.c, flexspi_nor_flash_ops.h, sln_flash_config.c, sln_flash_config_w25q256jvs.h, andsln_flash_ops.h unter dem Pfad smart HMI\coffee_machine\cm7\source\flash_config\ in den Ordner board des Example SW.
    • Deaktivieren Sie „Ressource vom Build ausschließen“ in C/C++ Build > Einstellungen, nachdem Sie mit der rechten Maustaste auf fileGeben Sie den Namen der s ein und öffnen Sie die Eigenschaften, damit sie in das Projekt integriert werden können.
  3. Ändern des enthaltenen Headers fileBenennen Sie sln_flash_config.h in sln_flash_config_w25q256jvs.h in sln_flash_config.c und flexspi_nor_flash_ops.h.
  4. Stellen Sie die FlexSPI1-Taktquelle im ein file clock_config.c bezieht sich auf die Kaffeemaschinen-App.

Fügen Sie Adapter- und Middle-Level-Unterstützung hinzu

  1. Kopieren Sie die files sln_flash.c, sln_flash.h, sln_encrypt.c und sln_encrypt.h als Adaptertreiber für file system und app aus dem Pfad smart HMI\coffee_machine\cm7\source\ in den Ordner source des example. Aktualisieren Sie das Neue files:
    • Deaktivieren Sie beim Erstellen die Option „Ressource vom Build ausschließen“.
    • Ändern Sie alle enthaltenen Header file Benennen Sie sln_flash_config.h in sln_flash_config_w25q256jvs.h.
  2. Kopieren Sie den Ordner fileSystem, das die APIs für die Kleinen enthält fileSystem und HAL-Treiber von Smart HMI \coffee_machine\cm7\source\ zum Example SW. Und Update für den neuen Ordner:
    • Deaktivieren Sie zum Erstellen die Option „Ressource vom Build ausschließen“.
    • Fügen Sie den Include-Pfad dafür in den Projekteinstellungen hinzu: „${workspace_loc:/${ProjName}/fileSystem}"
    • Ändern des enthaltenen Headers file Benennen Sie sln_flash_config.h in sln_flash_config_w25q256jvs.h und fica_definition.h in app_config.h im file sln_flash_littlefs.h.
  3. Kopieren Sie den Ordner littlefs mit der Middleware – little fileSystem vom Pfad SDK_2_13_0_ MIMXRT1170-EVK\middleware\ zum Example SW. Und aktualisieren Sie den neuen Ordner:
    • Deaktivieren Sie zum Erstellen die Option „Ressource vom Build ausschließen“.
    • Fügen Sie den Include-Pfad dafür in den Projekteinstellungen hinzu: „${workspace_loc:/${ProjName}/littlefs}“

HAL-Treiber hinzufügen 

  • Es gibt zwei HAL-Geräte – file System- und Gesichtsdatenbank-HAL werden für die Datenbankzugriffsfunktion unterstützt und sind bereits ohne Änderungen im Framework implementiert. Aktivieren Sie sie, indem Sie die folgenden Definitionen in board_define.h hinzufügen:
    • #define ENABLE_FLASH_DEV_Littlefs
    • #define ENABLE_FACEDB

Und ändern Sie den Namen der Gesichtsdatenbank für den Example: #define OASIS_FACE_DB_DIR „oasis_gui_face_rec“

Fügen Sie Unterstützung auf App-Ebene hinzu

  1. Aktualisieren Sie die Hauptdatei file lvgl_gui_face_rec_cm7.cpp:
    • Fügen Sie die Kopfzeile hinzu file im Zusammenhang mit dem Flash file System-HAL-Manager durch Hinzufügen der Codezeile: #include „fwk_flash.h“
    • Deklarieren und registrieren file System-HAL-Gerät:
      • HAL_FLASH_DEV_DECLARE(Littlefs);
      • HAL_FLASH_DEV_REGISTER(Littlefs, ret);
        Notiz: Der file Das System-HAL-Gerät muss registriert werden, bevor alle Gerätemanager in der Funktion APP_InitFramework() initialisiert werden.
    • Rufen Sie die Funktion BOARD_ConfigMPU() in APP_BoardInit() auf, um MPU zu konfigurieren.
  2. Legen Sie die file Systemzuordnung auf Flash in der file app_config.h durch Definieren der in der verwendeten Makrodefinitionen file sln_flash_littlefs.h:
    • #define FICA_IMG_FILE_SYS_ADDR (FLASH_IMG_SIZE + RES_SHMEM_TOTAL_SIZE)
    • #FICA definieren_FILE_SYS_SIZE (0x280000)

Konfigurationen
Einige Flash-bezogene Codes werden im SRAM-ITC-Bereich ausgeführt, um eine ausreichende Leistung zu gewährleisten. Kopieren Sie den Ordner linkscripts mit den Linker-Konfigurationen aus dem Pfad smart HMI\coffee_machine\cm7\ in den Ordner example SW.

Implementieren Sie eine LVGL-GUI-App
Die Entwicklung einer auf einem Framework basierenden LVGL-GUI-App ruft die APIs von Ausgabe-UI-HAL auf und stellt die APIs für Ausgabe-UI-HAL bereit (siehe Abschnitt 4.1.3 für die Implementierung von Ausgabe-UI-HAL).

Die detaillierte Implementierung einer LVGL-GUI-App hängt jedoch von den Anforderungen und dem Design der Anwendung ab. Die GUI-App in diesem Beispielample ist wie am Anfang des Abschnitts Abschnitt 4 beschrieben aufgebaut.

Nachfolgend finden Sie die Implementierungseinführungen:

  1. Die benutzerdefinierten Codes werden in den Dateien „custom.c“ und „custom.h“ implementiert, die von GUI Guider als Schnittstelle zwischen dem GUI Guider-Projekt und dem eingebetteten Systemprojekt bereitgestellt werden.
    •  Fügen Sie die neuen Funktionen mit dem Namen gui_xxx() in custom.c hinzu, um die folgenden Funktionen zu erreichen:
      • Für Ausgabe-UI-HAL und GUI-App zum Aktualisieren der Benutzeroberfläche.
      • Damit die GUI-App Ereignisse durch den Aufruf von UI-Rückruffunktionen aus der Ausgabe-UI-HAL auslösen kann.
        Zum Beispielample, die neue Funktion gui_event_face_rec_action() ruft UI-Rückruffunktionen auf, um eines der Ereignisse der Gesichtsregistrierung, Gesichtserkennung und Benutzerlöschung zu verarbeiten, das von der GUI-App ausgelöst wird, wenn auf die entsprechende Schaltfläche geklickt wird.
        Hinweis: Die Funktion gui_set_virtual_face() wird in der Ausgabe-UI-HAL für pre aufgerufenview Der Modus muss in custom.c implementiert werden:
    •  Klonen Sie die Funktion gui_set_virtual_face() von smart HMI\coffee_machine\cm4\custom \custom.c.
    •  Ändern Sie den Namen des Widgets home_img_cameraPreview zu screen_img_camera_preview in der Funktion.
    •  Implementieren Sie die UI-Rückruffunktionen mit demselben Prototyp für alle in der Ausgabe-UI-HAL unter der Kontrolle der Makrodefinition #ifndef RT_PLATFORM in custom.c, um die Kompatibilität mit dem GUI Guider-Projekt zu gewährleisten, da diese Funktionen in der Ausgabe-UI-HAL von der abhängig sind eingebettete Plattform. In custom.c hängen sie vom Simulator auf dem GUI-Guider ab und sind unabhängig von der eingebetteten Plattform. Zum Beispielample, der Rückruf zur Gesichtsregistrierung wird für den laufenden GUI-Guider-Simulator wie folgt implementiert: #ifndef RT_PLATFORM void UI_Registration_Callback() { gui_hide_del_user_btn(true); s_InAction = false; return; }
      Notiz: Siehe den gleichen Prototyp der Funktion, die in Schritt 6 von Abschnitt 4.1.3 eingeführt wurde
      Die Makrodefinition RT_PLATFORM wird in den Projekteinstellungen von MCUXpresso wie in Abbildung 7 dargestellt festgelegt:NXP-AN14263-Implementierung der LVGL-GUI-Gesichtserkennung auf Framewor-fig- (14)
    • Deklarieren Sie alle Funktionen mit den Namen UI_xxx_Callback() und gui_xxx() in „custom.h“ und fügen Sie „custom.h“ hinzu, das in „smart_tlhmi_event_descriptor.h“ enthalten ist, um die GUI-APIs für die UI-Ausgabe-HAL freizugeben.
  2. Entwickeln Sie die GUI im GUI Guider:
    • Klonen Sie den Ordner Kamera vorview Enthält die GUI Guider-Projektsoftware im Ordner gui_guider im Basissoftwarepaket lvgl_gui_camera_preview_cm7. Ändern Sie den zugehörigen Namen camera_preview zu face_rec für den neuen Example.
    • Kopieren Sie die oben aktualisierten Dateien custom.c und custom.h in die neue GUI Guider-Projektsoftware.
    •  Öffnen Sie das neue face_rec-Projekt im GUI Guider. Aktualisieren Sie wie folgt:
      • Fügen Sie die neue Schaltfläche mit der Bezeichnung „Benutzer löschen“ hinzu. Fügen Sie das Flag „Versteckt“ hinzu, damit die Schaltfläche ausgeblendet wird, wenn die GUI-App gestartet wird.
      • Fügen Sie die Codezeile zum Aufrufen der API gui_event_face_rec_action() mit unterschiedlichen Ereignis-ID-Parametern für den Auslöser „Freigegeben“ in den Ereigniseinstellungen aller Schaltflächen „Registrierung“, „Erkennung“ und „Benutzer löschen“ hinzu, um die Ereignisse „Gesichtsregistrierung“, „Gesichtserkennung“ und „Benutzer löschen“ auszulösen. Abbildung 8 zeigt den Code für das Ereignis der Schaltfläche „Registrierung“:NXP-AN14263-Implementierung der LVGL-GUI-Gesichtserkennung auf Framewor-fig- (15)
  3. Aktualisieren Sie den generierten Code vom GUI Guider auf das MCUXpresso-Projekt.
    • Ersetzen Sie den Inhalt mit Ausnahme der Ordnerbilder im Ordner, der von der MCUXpresso-Projekt-SW generiert wurde, durch die entsprechenden Inhalte im Ordner, der von der GUI Guider-Projekt-SW generiert wurde.

Notiz: Weitere Einzelheiten zu den oben eingeführten Änderungen finden Sie im Beispielample Software unter https://mcuxpresso.nxp.com/appcodehub.

Überprüfungen mit dem Exampdas Projekt

Um den Ex zu bekommenampDas Softwarepaket mit den Ressourcen und Tools für diesen Anwendungshinweis finden Sie unter: https://mcuxpresso.nxp.com/appcodehubÖffnen Sie das Example Projekt auf MCUXpresso IDE. Erstellen und programmieren Sie die .axf-Datei file an die Adresse 0x30000000 und programmieren Sie den Ressourcen-Bin file camera_preview_resource.bin an die Adresse 0x30800000.

Die LVGL-GUI-Gesichtserkennung example funktioniert normalerweise wie folgt:

  • Vorview: Beim Einschalten werden die von der Kamera erfassten Videostreams im spezifischen Bereich der Kamera angezeigtview auf dem GUI-Bildschirm. Das Statusetikett zeigt „Preview…“. Einzelheiten finden Sie in Abbildung 3. Die Schaltfläche „Benutzer löschen“ ist ausgeblendet. Wenn Sie auf den Bereich außerhalb der Schaltflächen und Bilder klicken, wird die Vorschau angezeigtview Geben Sie den oben genannten Zustand ein, nachdem die Gesichtsregistrierungs- oder Erkennungsaktion beendet ist.
  • Anmeldung:
    • tartu: Wenn Sie auf die Schaltfläche „Registrierung“ klicken, beginnt die Gesichtsregistrierung. Die Statusbezeichnung ändert sich und zeigt „Registrierung…“ an, das Gesichtsführungsrechteck wird blau und der Fortschrittsbalken zeigt den Fortschritt an. Stellen Sie sicher, dass das Gesicht des Benutzers für die Registrierung im blauen Gesichtsführungsrechteck angezeigt wird.
    • Erfolg: Die Statusbezeichnung zeigt „Registrierung…OK“ und die registrierte Benutzer-ID-Nummer an, das Gesichtsführungsrechteck wird rot, wenn die Gesichtsregistrierung erfolgreich ist, bevor der Fortschritt in der Leiste vollständig angezeigt wird.
    • Fehler -> Zeitüberschreitung: Die Statusbeschriftung zeigt „Registrierung…Zeitüberschreitung“, wenn die Gesichtsregistrierung immer noch fehlschlägt, wenn der Fortschritt auf der Leiste „Voll“ anzeigt.
    • Fehler -> Duplizierung: Auf der Statusbeschriftung wird „Registrierung… fehlgeschlagen“ angezeigt. Das Gesichtsführungsrechteck wird grün, wenn das registrierte Gesicht erkannt wird, bevor der Fortschritt auf der Leiste vollständig angezeigt wird.
  • Erkenntnis:
    • Start: Wenn Sie auf die Schaltfläche „Erkennung“ klicken, beginnt die Gesichtserkennung. Die Statusbezeichnung ändert sich und zeigt „Erkennung…“ an, das Gesichtsführungsrechteck wird blau und der Fortschrittsbalken zeigt den Fortschritt an. Stellen Sie sicher, dass das Gesicht des Benutzers zur Registrierung im blauen Gesichtsführungsrechteck angezeigt wird.
    • Erfolg: Auf der Statusbeschriftung wird „Erkennung…OK“ und die erkannte Benutzer-ID-Nummer angezeigt. Das Gesichtsführungsrechteck wird grün, wenn die Gesichtserkennung erfolgreich ist, bevor der Fortschritt auf der Leiste vollständig angezeigt wird. An dieser Stelle erscheint die Schaltfläche Benutzer löschen. Das bedeutet, dass der Benutzer nur dann gelöscht werden darf, wenn er erkannt wird.
    • agil: Die Statusbezeichnung zeigt „Erkennung … Zeitüberschreitung“ an, wenn die Gesichtserkennung immer noch fehlgeschlagen ist, während der Fortschritt in der Leiste vollständig angezeigt wird.
  • Benutzer löschen: Wenn die Schaltfläche „Benutzer löschen“ angeklickt wird, ändert sich die Statusbezeichnung nach erfolgreicher Gesichtserkennung in „Benutzer löschen…OK“, wobei das Gesichtsführungsrechteck blau wird und der Fortschritt in der Leiste vollständig angezeigt wird. Die Schaltfläche „Benutzer löschen“ wird wieder ausgeblendet. Das erkannte Gesicht/der erkannte Benutzer wird aus der Datenbank gelöscht. Das bedeutet, dass dieses Gesicht/der erkannte Benutzer erst wieder erkannt werden kann, wenn er/sie erneut registriert wird.

Hinweis zum Quellcode im Dokument
ExampDer in diesem Dokument gezeigte Code unterliegt dem folgenden Urheberrecht und der BSD-3-Klausel-Lizenz:

Copyright 2024 NXP. Die Weiterverbreitung und Nutzung in Quell- und Binärform, mit oder ohne Änderung, ist zulässig, sofern die folgenden Bedingungen erfüllt sind:

  1. Bei der Weiterverteilung des Quellcodes müssen der oben genannte Copyright-Vermerk, diese Liste der Bedingungen und der folgende Haftungsausschluss beibehalten werden.
  2. Bei Weiterverbreitungen in binärer Form müssen der obige Copyright-Hinweis, diese Liste der Bedingungen und der folgende Haftungsausschluss in der Dokumentation und/oder anderen Materialien mit der Weitergabe bereitgestellt werden.
  3. Weder der Name des Urheberrechtsinhabers noch die Namen seiner Mitwirkenden dürfen ohne vorherige ausdrückliche schriftliche Genehmigung zur Unterstützung oder Förderung von Produkten verwendet werden, die von dieser Software abgeleitet sind.

DIESE SOFTWARE WIRD VON DEN URHEBERRECHTSINHABERN UND MITWIRKENDEN „WIE BESEHEN“ BEREITGESTELLT. JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GARANTIEN, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF STILLSCHWEIGENDE GARANTIEN DER MARKTGÄNGIGKEIT UND EIGNUNG FÜR EINEN BESTIMMTEN ZWECK, WERDEN AUSGESCHLOSSEN. DER URHEBERRECHTSINHABER ODER DIE MITWIRKENDEN SIND IN KEINEM FALL FÜR DIREKTE, INDIREKTE, ZUFÄLLIGE, SPEZIELLE, EXEMPLARISCHE ODER FOLGESCHÄDEN (EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE BESCHAFFUNG VON ERSATZGÜTERN ODER -DIENSTEN, NUTZUNGSAUSFALL, DATENVERLUST, VERLUST VON GEWINNEN ODER GESCHÄFTSUNTERBRECHUNG) VERANTWORTLICH, UNGEACHTET DER URSACHE UND UNGEACHTET DER HAFTUNGSTHEORIE, OB VERTRAGLICH, AUFGRUND VON VERSCHULDENSUNABHÄNGIGER HAFTUNG ODER UNERLAUBTER HANDLUNG (EINSCHLIESSLICH FAHRLÄSSIGKEIT ODER ANDERWEITIG), DIE IN IRGENDEINER WEISE AUS DER VERWENDUNG DIESER SOFTWARE ENTSTEHEN, SELBST WENN AUF DIE MÖGLICHKEIT DERARTIGER SCHÄDEN HINGEWIESEN WURDE.

Versionsgeschichte

NXP-AN14263-Implementierung der LVGL-GUI-Gesichtserkennung auf Framewor-fig- (16)

Rechtliche Informationen

Definitionen
Entwurf – Der Entwurfsstatus eines Dokuments weist darauf hin, dass der Inhalt noch intern überprüft wirdview und unterliegen der formellen Genehmigung, die zu Änderungen oder Ergänzungen führen kann. NXP Semiconductors gibt keine Zusicherungen oder Gewährleistungen hinsichtlich der Richtigkeit oder Vollständigkeit der in einer Entwurfsversion eines Dokuments enthaltenen Informationen und übernimmt keine Haftung für die Folgen der Verwendung dieser Informationen.

Haftungsausschluss

  • Eingeschränkte Gewährleistung und Haftung — Die Informationen in diesem Dokument gelten als genau und zuverlässig. NXP Semiconductors gibt jedoch keine ausdrücklichen oder stillschweigenden Zusicherungen oder Gewährleistungen hinsichtlich der Genauigkeit oder Vollständigkeit dieser Informationen und übernimmt keine Haftung für die Folgen der Verwendung dieser Informationen. NXP Semiconductors übernimmt keine Verantwortung für den Inhalt dieses Dokuments, wenn dieser von einer Informationsquelle außerhalb von NXP Semiconductors bereitgestellt wird.
    In keinem Fall haftet NXP Semiconductors für indirekte, zufällige, Straf-, Sonder- oder Folgeschäden (einschließlich – ohne Einschränkung – entgangener Gewinn, entgangene Einsparungen, Betriebsunterbrechung, Kosten im Zusammenhang mit der Entfernung oder dem Austausch von Produkten oder Nacharbeitskosten), unabhängig davon, ob oder nicht, solche Schäden beruhen auf unerlaubter Handlung (einschließlich Fahrlässigkeit), Gewährleistung, Vertragsbruch oder einer anderen Rechtstheorie.
    Ungeachtet etwaiger Schäden, die dem Kunden aus welchem ​​Grund auch immer entstehen könnten, ist die aggregierte und kumulative Haftung von NXP Semiconductors gegenüber dem Kunden für die hierin beschriebenen Produkte gemäß den Geschäftsbedingungen für den gewerblichen Verkauf von NXP Semiconductors beschränkt.
  • Änderungsvorbehalt — NXP Semiconductors behält sich das Recht vor, jederzeit und ohne Vorankündigung Änderungen an den in diesem Dokument veröffentlichten Informationen vorzunehmen, einschließlich, aber nicht beschränkt auf Spezifikationen und Produktbeschreibungen. Dieses Dokument ersetzt alle Informationen, die vor seiner Veröffentlichung bereitgestellt wurden.
  • Eignung für den Einsatz — Produkte von NXP Semiconductors sind weder für die Verwendung in lebenserhaltenden, lebenskritischen oder sicherheitskritischen Systemen oder Geräten noch für Anwendungen, bei denen ein Ausfall oder eine Fehlfunktion eines Produkts von NXP Semiconductors vernünftigerweise erwartet werden kann, dafür ausgelegt, autorisiert oder garantiert, dass sie geeignet sind Personenschäden, Tod oder schwere Sach- oder Umweltschäden. NXP Semiconductors und seine Lieferanten übernehmen keine Haftung für den Einbau und/oder die Verwendung von NXP Semiconductors-Produkten in solchen Geräten oder Anwendungen, und daher erfolgt der Einbau und/oder die Verwendung auf eigenes Risiko des Kunden.
  • Anwendungen — Hierin beschriebene Anwendungen für eines dieser Produkte dienen nur der Veranschaulichung. NXP Semiconductors gibt keine Zusicherung oder Gewährleistung, dass solche Anwendungen ohne weitere Tests oder Modifikationen für die angegebene Verwendung geeignet sind.
    Kunden sind für das Design und den Betrieb ihrer Anwendungen und Produkte unter Verwendung von NXP Semiconductors-Produkten verantwortlich und NXP Semiconductors übernimmt keine Haftung für Unterstützung bei Anwendungen oder Kundenproduktdesign. Es liegt in der alleinigen Verantwortung des Kunden, festzustellen, ob das Produkt von NXP Semiconductors für die geplanten Anwendungen und Produkte des Kunden sowie für die geplante Anwendung und Nutzung durch Drittkunden des Kunden geeignet und geeignet ist. Kunden sollten geeignete Konstruktions- und Betriebsschutzmaßnahmen bereitstellen, um die mit ihren Anwendungen und Produkten verbundenen Risiken zu minimieren. NXP Semiconductors übernimmt keine Haftung im Zusammenhang mit Ausfällen, Schäden, Kosten oder Problemen, die auf Schwächen oder Ausfällen in den Anwendungen oder Produkten des Kunden oder der Anwendung oder Nutzung durch Drittkunden des Kunden beruhen. Der Kunde ist dafür verantwortlich, alle erforderlichen Tests für die Anwendungen und Produkte des Kunden unter Verwendung von NXP Semiconductors-Produkten durchzuführen, um einen Ausfall der Anwendungen und Produkte oder der Anwendung oder Nutzung durch Drittkunden des Kunden zu vermeiden. NXP übernimmt diesbezüglich keine Haftung.
  • Allgemeine Geschäftsbedingungen für den gewerblichen Verkauf — NXP Semiconductors-Produkte werden gemäß den allgemeinen Geschäftsbedingungen für den kommerziellen Verkauf verkauft, die unter https://www.nxp.com/pro veröffentlicht sindfile/Bedingungen, sofern nicht in einem gültigen schriftlichen Einzelvertrag etwas anderes vereinbart wurde. Bei Abschluss eines Individualvertrages gelten ausschließlich die Bedingungen des jeweiligen Vertrages. NXP Semiconductors widerspricht hiermit ausdrücklich der Anwendung der Allgemeinen Geschäftsbedingungen des Kunden im Hinblick auf den Kauf von NXP Semiconductors-Produkten durch den Kunden.
  • Ausfuhrkontrolle — Dieses Dokument sowie die darin beschriebenen Artikel können Exportkontrollbestimmungen unterliegen. Für den Export ist möglicherweise eine vorherige Genehmigung der zuständigen Behörden erforderlich.
  • Eignung für den Einsatz in nicht automobilqualifizierten Produkten — Sofern in diesem Dokument nicht ausdrücklich darauf hingewiesen wird, dass dieses spezielle Produkt von NXP Semiconductors für die Automobilindustrie geeignet ist, ist das Produkt nicht für den Einsatz in Automobilen geeignet. Es ist weder entsprechend den Automobiltests oder Anwendungsanforderungen qualifiziert noch getestet. NXP Semiconductors übernimmt keine Haftung für den Einbau und/oder die Verwendung von nicht für den Automobilbereich qualifizierten Produkten in Automobilausrüstung oder -anwendungen.
    Für den Fall, dass der Kunde das Produkt zum Design-in und zur Verwendung in Automobilanwendungen gemäß Automobilspezifikationen und -standards verwendet, muss der Kunde (a) das Produkt ohne die Gewährleistung von NXP Semiconductors für das Produkt für solche Automobilanwendungen, -verwendungen und -spezifikationen verwenden, und ( b) Wann immer der Kunde das Produkt für Automobilanwendungen über die Spezifikationen von NXP Semiconductors hinaus verwendet, erfolgt diese Verwendung ausschließlich auf eigenes Risiko des Kunden, und (c) der Kunde stellt NXP Semiconductors vollständig von jeglicher Haftung, Schäden oder gescheiterten Produktansprüchen frei, die sich aus dem Design und der Verwendung des Kunden ergeben das Produkt für Automobilanwendungen über die Standardgewährleistung von NXP Semiconductors und die Produktspezifikationen von NXP Semiconductors hinaus.
  • Übersetzungen — Eine nicht-englische (übersetzte) Version eines Dokuments, einschließlich der rechtlichen Informationen in diesem Dokument, dient nur als Referenz. Bei Abweichungen zwischen der übersetzten und der englischen Version ist die englische Version maßgebend.
  • Sicherheit — Dem Kunden ist bekannt, dass alle NXP-Produkte möglicherweise unbekannten Schwachstellen unterliegen oder etablierte Sicherheitsstandards oder -spezifikationen mit bekannten Einschränkungen unterstützen. Der Kunde ist für das Design und den Betrieb seiner Anwendungen und Produkte während ihres gesamten Lebenszyklus verantwortlich, um die Auswirkungen dieser Schwachstellen auf die Anwendungen und Produkte des Kunden zu verringern. Die Verantwortung des Kunden erstreckt sich auch auf andere offene und/oder proprietäre Technologien, die von NXP-Produkten zur Verwendung in Kundenanwendungen unterstützt werden. NXP übernimmt keine Haftung für Schwachstellen. Der Kunde sollte regelmäßig Sicherheitsupdates von NXP überprüfen und entsprechend nachverfolgen. Der Kunde wählt Produkte mit Sicherheitsmerkmalen aus, die den Regeln, Vorschriften und Standards der beabsichtigten Anwendung am besten entsprechen, und trifft die endgültigen Designentscheidungen in Bezug auf seine Produkte und ist unabhängig davon allein verantwortlich für die Einhaltung aller gesetzlichen, behördlichen und sicherheitsbezogenen Anforderungen in Bezug auf seine Produkte Informationen oder Support, die von NXP bereitgestellt werden können.

NXP verfügt über ein Product Security Incident Response Team (PSIRT) (erreichbar unter PSIRT@nxp.com), das die Untersuchung, Meldung und Lösungsfreigabe von Sicherheitslücken von NXP-Produkten verwaltet.
NXP BV – NXP BV ist kein Betreiberunternehmen und vertreibt oder verkauft keine Produkte.

Handelsmarken
Beachten: Alle genannten Marken, Produktnamen, Servicenamen und Warenzeichen sind Eigentum ihrer jeweiligen Inhaber.

NXP — Wortmarke und Logo sind Marken von 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 – sind Marken und/oder eingetragene Marken von Arm Limited (oder seinen Tochtergesellschaften oder verbundenen Unternehmen) in den USA und/oder anderswo. Die entsprechende Technologie kann durch einige oder alle Patente, Urheberrechte, Designs und Geschäftsgeheimnisse geschützt sein. Alle Rechte vorbehalten.

  • i.MX — ist eine Marke von NXP BV
  • J-Link — ist eine Marke der SEGGER Microcontroller GmbH.

Microsoft, Azure und ThreadX – sind Marken der Microsoft-Unternehmensgruppe.

Bitte beachten Sie, dass wichtige Hinweise zu diesem Dokument und den darin beschriebenen Produkten im Abschnitt „Rechtliche Informationen“ enthalten sind.

© 2024 NXP BV
Weitere Informationen finden Sie unter: https://www.nxp.com

  • Datum der Veröffentlichung: 19. April 2024
  • Dokument-ID: AN14263

Häufig gestellte Fragen

F: Was ist der Hauptzweck dieses Produkts?
A: Der Hauptzweck besteht darin, die Gesichtserkennungsfunktion mithilfe eines AI&ML-Vision-Algorithmusmodells mit einer einfachen LVGL-GUI zu ermöglichen.ample auf der SLN-TLHMI-IOT-Karte.

F: Wie können Entwickler von diesem Anwendungshinweis profitieren?
A: Entwickler können lernen, wie man Gesichtserkennung auf dem Framework Schritt für Schritt mithilfe der bereitgestellten Ex implementiertample und verstehen Sie die beteiligten Gerätemanager, HAL-Geräte und Ereignismechanismen.

Dokumente / Ressourcen

NXP AN14263 Implementiert die LVGL-GUI-Gesichtserkennung auf Framewor [pdf] Benutzerhandbuch
AN14263 LVGL-GUI-Gesichtserkennung auf Framewor implementieren, AN14263, LVGL-GUI-Gesichtserkennung auf Framewor implementieren, LVGL-GUI-Gesichtserkennung auf Framewor, Gesichtserkennung auf Framewor, Erkennung auf Framewor, Framewor

Verweise

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind markiert *