v3.7.0¶
v3.7.0 ist ein großes Release. Es fügt das Modul audio (Portenta H7 PDM-Mikrofon) mit einer neuen nicht-blockierenden Callback-API hinzu, das micro_speech-TensorFlow-Modul zur Spracherkennung, einen brandneuen parallelen RGB-LCD-Controller (mit HDMI-Ausgabe und FT5X06-Touch), eine image.flush()-Methode mit Pixelformat-Konstanten und eine neu geschriebene image.draw_image()-Skalierungs-Pipeline. Mehrere veraltete Hilfsbibliotheken und Bildmethoden wurden entfernt und die yuv_to_*-Berechnung hat sich geändert — lesen Sie die brechenden Änderungen weiter unten.
Höhepunkte¶
audio-Modul — Aufnahme über das integrierte PDM-Mikrofon des Portenta H7 mit einer nicht-blockierendenstart_streaming(callback)-API.micro_speech— ein TensorFlow-Modul zur Micro-Speech-Erkennung.Neuer LCD-Controller — Unterstützung für parallele RGB-Displays, HDMI-Ausgabe (TFP410) und FT5X06-Touch.
image.draw_image()— neu geschrieben mit einer vollständigen Skalierungs-/Alpha-/Paletten-Pipeline (x_scale/y_scale/hint/color_palette…).image.flush()plus Pixelformat-Konstanten (image.BINARY/GRAYSCALE/RGB565/YUV422/BAYER/JPEG).Brechend: veraltete mathematische Hilfsbibliotheken und mehrere Bildmethoden wurden entfernt,
draw_image()/ die LCD-APIs wurden überarbeitet, undyuv_to_*subtrahiert nicht mehr 128 — siehe die brechenden Änderungen.
Neue Funktionen¶
audio— ein neuesaudio-Modul für den Portenta H7 zur Aufnahme über das PDM-Mikrofon:audio.init(), das nicht-blockierendeaudio.start_streaming(callback)undaudio.stop_streaming()(die Frequenz wird in Hz angegeben).micro_speech— ein neues Modul mit einerMicroSpeech-Klasse,audio_callback()undmicro_speech()für die TensorFlow-Spracherkennung;listen()verwendet einen gleitenden Fensterdurchschnitt und akzeptiert einfilter-Schlüsselwort, um die Ergebnisse auf eine Label-Liste einzuschränken.LCD — ein neuer LCD-Controller mit Unterstützung für parallele RGB-Displays, den Typen
LCD_NONE/LCD_SHIELD/LCD_DISPLAY, vielen Framesize-Konstanten,triple_buffer/framesize/refresh/bgr/deinit, einem erweitertendisplay, HDMI-Ausgabe über den TFP410 und Unterstützung für FT5X06-Touchscreens.image.flush()— eineimage.flush()-Methode und Pixelformat-Konstanten hinzugefügt (image.BINARY/GRAYSCALE/RGB565/YUV422/BAYER/JPEG).image.draw_image()— neu geschrieben mit einer neuen Skalierungs-Pipeline:x_scale/y_scale/x_size/y_size,rgb_channel,alpha,color_palette,alpha_paletteundhint, plus den Konstantenimage.AREA/BILINEAR/BICUBIC/CENTER/EXTRACT_RGB_CHANNEL_FIRST/APPLY_COLOR_PALETTE_FIRSTsowie neuen Beispielen für Alpha-Blending / Farbtabellen / Skalierung.ImageReader.next_frame()erhielt einpause-Schlüsselwort, um die Echtzeit-Wiedergabeverzögerung zu deaktivieren.Portenta-Audio-Beispiele (
audio_fft.py,micro_speech.py) und ein ExtInt-Beispiel zum Aufwachen aus dem Stop-Modus hinzugefügt.
Weitere Änderungen und Verbesserungen¶
Die integrierten Beispiele wurden unter
scripts/examples/Arduino/neu organisiert; der Framebuffer wird nun sofort aktualisiert, nachdem Bilder mitcopy_to_fb=Truegeladen/erstellt wurden (kein manuelles Flush erforderlich); der Heap des Portenta wurde leicht reduziert, um mehr statischen Treiber-Status unterzubringen.
Fehlerbehebungen¶
Kamera und Bildverarbeitung:
Vertauschtes Rot/Blau (RGB565-Bytereihenfolge) in aufgenommenen Bildern korrigiert, die DMA2D-Zeichnungsrundung an den übrigen Zeichencode angepasst, die
fb_alloc-Beschädigung bei rekursiven Allokationen (find_blobs()) behoben undtop_hat()/black_hat()so abgesichert, dass sie nur aktiv sind, wenn sowohl Binär- als auch Mathematik-Operationen aktiviert sind.
Display und Audio:
Die LCD-Shield-Ausgabe und den 1-Kanal-Mono-Audiomodus des Portenta korrigiert.
Portenta:
Ein Ethernet-/SDRAM-Problem umgangen (
rst_ethauf High treiben) und die SDRAM-Timing-Konfiguration korrigiert.
Hardware- und Board-Unterstützung¶
Arduino Portenta H7 — Audioaufnahme über das integrierte PDM-Mikrofon (SAI / PDM2PCM).
LCD — neuer paralleler RGB-Display-Controller (LTDC im H7-Build aktiviert), HDMI-Ausgabe über den TFP410 und Unterstützung für FT5X06-Touchscreen-LCDs.
API-brechende Änderungen¶
Für Benutzer sichtbare API-Brüche zwischen v3.6.9 und v3.7.0. Umfang: Python-C-Module in modules/ und Python-Bibliotheken in scripts/libraries/.
Jede Änderung ist mit ihrer Auswirkung gekennzeichnet:
minor — schmale API; betrifft nur Skripte, die sie verwendet haben.
behavior — gleiche API, andere Ergebnisse; überprüfen Sie abgestimmte Skripte erneut.
Die Änderungen sind in dieser Reihenfolge nach Auswirkung gruppiert. Wenn Sie nur Ihren Code portieren möchten, springen Sie zur Migrations-Checkliste am Ende. Jeder Commit-Hash verlinkt auf seinen Diff auf GitHub.
Veraltete mathematische Hilfsbibliotheken entfernt (minor)¶
Die Hilfsbibliotheken mtx, rv, ulinalg, umatrix und vec wurden zugunsten von ulab aus scripts/libraries entfernt. Skripte, die eine davon mit import einbinden, schlagen fehl und müssen auf ulab portiert werden.
Commits: 1f7da9272
remove_shadows() / chrominvar() / illuminvar() entfernt (minor)¶
image.remove_shadows(), image.chrominvar() und image.illuminvar() wurden ersatzlos gelöscht. Skripte, die diese Methoden aufrufen, müssen die Aufrufe entfernen.
Commits: 3173c2bb3
image.draw_image()-Signatur überarbeitet (minor)¶
image.draw_image() wurde auf Basis einer neuen Skalierungs-Pipeline neu geschrieben. Die alten positionsbasierten alpha- / einzelnen scale-Argumente und die frühere Positionsreihenfolge gelten nicht mehr; verwenden Sie die neue Schlüsselwortform (x_scale= / y_scale= oder x_size= / y_size=, alpha=, color_palette=, hint= …).
Commits: 3439f8824
Neufassung des LCD-Moduls (minor)¶
Das lcd-Modul wurde für den neuen Display-Controller neu geschrieben. lcd.init() nimmt nun einen Display-type (LCD_NONE / LCD_SHIELD / LCD_DISPLAY) und neue Schlüsselwortargumente entgegen, und die Konstanten- / API-Oberfläche wurde wesentlich umstrukturiert. Alte, ausschließlich für Shields gedachte Skripte funktionieren meist weiterhin, aber die Standardwerte und das Verhalten haben sich geändert — überprüfen Sie LCD-Skripte anhand der neuen type / framesize-API.
Commits: 185538207
yuv_to_* subtrahiert nicht mehr 128 (behavior)¶
image.yuv_to_binary() / yuv_to_grayscale() / yuv_to_rgb() / yuv_to_lab() behandeln das Y-Tupelelement nun als vorzeichenlosen Wert von 0–255, anstatt 128 zu subtrahieren. Aufrufer müssen Y ohne den früheren −128-Bias übergeben, um dieselben Farben wie zuvor zu erhalten.
Commits: dcf141192
Migrations-Checkliste¶
Für eine saubere Portierung auf v3.7.0 fällt typischerweise folgende Arbeit an:
Portieren Sie die Verwendung von
mtx/rv/ulinalg/umatrix/vecaufulab(die Entfernung der Mathematik-Bibliotheken).Entfernen Sie die Aufrufe von
image.remove_shadows()/chrominvar()/illuminvar()(die entfernten Bildmethoden).Aktualisieren Sie die Aufrufe von
image.draw_image()auf die neue Schlüsselwort-Signatur (die draw_image-Überarbeitung).Überprüfen Sie LCD-Skripte anhand der neuen
lcdtype/framesize-API (die LCD-Neufassung).Lassen Sie den −128-Bias weg, wenn Sie Y an
yuv_to_*übergeben (die yuv_to_*-Änderung).
Alle anderen Skripte laufen unverändert weiter.