v3.7.0

v3.7.0 is een grote release. Het voegt de audio-module toe (Portenta H7 PDM-microfoon) met een nieuwe niet-blokkerende callback-API, de micro_speech TensorFlow-spraakherkenningsmodule, een gloednieuwe parallelle-RGB-LCD-controller (met HDMI-uitvoer en FT5X06-touch), een image.flush()-methode met pixelformaatconstanten, en een herschreven image.draw_image()-schalingspijplijn. Verscheidene oudere hulpbibliotheken en image-methoden zijn verwijderd en de yuv_to_*-wiskunde is gewijzigd — lees de breaking changes hieronder.

Hoogtepunten

  • audio-module — opname met de onboard PDM-microfoon van de Portenta H7 via een niet-blokkerende start_streaming(callback)-API.

  • micro_speech — een TensorFlow micro-spraakherkenningsmodule.

  • Nieuwe LCD-controller — ondersteuning voor parallelle RGB-displays, HDMI-uitvoer (TFP410) en FT5X06-touch.

  • image.draw_image() — herschreven met een volledige schalings-/alpha-/palet-pijplijn (x_scale / y_scale / hint / color_palette …).

  • image.flush() plus pixelformaatconstanten (image.BINARY / GRAYSCALE / RGB565 / YUV422 / BAYER / JPEG).

  • Breaking: oudere wiskundige hulpbibliotheken en verscheidene image-methoden zijn verwijderd, de draw_image()-/LCD-API’s zijn herwerkt, en yuv_to_* trekt niet langer 128 af — zie de breaking changes.

Nieuwe functies

  • audio — een nieuwe Portenta H7 audio-module voor opname met een PDM-microfoon: audio.init(), niet-blokkerend audio.start_streaming(callback), en audio.stop_streaming() (de frequentie wordt opgegeven in Hz).

  • micro_speech — een nieuwe module met een MicroSpeech-klasse, audio_callback() en micro_speech() voor TensorFlow-spraakherkenning; listen() gebruikt een voortschrijdend vensteringsgemiddelde en accepteert een filter-keyword om resultaten te beperken tot een lijst met labels.

  • LCD — een nieuwe LCD-controller met ondersteuning voor parallelle RGB-displays, LCD_NONE / LCD_SHIELD / LCD_DISPLAY-typen, veel framesize-constanten, triple_buffer / framesize / refresh / bgr / deinit, een uitgebreide display, HDMI-uitvoer via de TFP410, en ondersteuning voor het FT5X06-touchscreen.

  • image.flush() — een image.flush()-methode en pixelformaatconstanten (image.BINARY / GRAYSCALE / RGB565 / YUV422 / BAYER / JPEG) toegevoegd.

  • image.draw_image() — herschreven met een nieuwe schalingspijplijn: x_scale / y_scale / x_size / y_size, rgb_channel, alpha, color_palette, alpha_palette en hint, plus de constanten image.AREA / BILINEAR / BICUBIC / CENTER / EXTRACT_RGB_CHANNEL_FIRST / APPLY_COLOR_PALETTE_FIRST en nieuwe voorbeelden voor alpha-blending / kleurtabellen / schaling.

  • ImageReader.next_frame() heeft een pause-keyword gekregen om de real-time afspeelvertraging uit te schakelen.

  • Portenta-audiovoorbeelden (audio_fft.py, micro_speech.py) en een ExtInt wake-from-stop-voorbeeld toegevoegd.

Overige wijzigingen en verbeteringen

  • De ingebouwde voorbeelden zijn gereorganiseerd onder scripts/examples/Arduino/; de framebuffer wordt nu direct bijgewerkt na het laden/aanmaken van afbeeldingen met copy_to_fb=True (geen handmatige flush nodig); de Portenta-heap is iets verkleind om meer statische driver-state te laten passen.

Bugfixes

Camera en beeldverwerking:

  • Verwisselde rood/blauw (RGB565-byte-volgorde) in vastgelegde afbeeldingen gecorrigeerd, de afronding van DMA2D-tekenen afgestemd op andere teken-code, fb_alloc-corruptie bij recursieve allocaties (find_blobs()) gecorrigeerd, en top_hat() / black_hat() afhankelijk gemaakt van het ingeschakeld zijn van zowel binaire als wiskundige bewerkingen.

Display en audio:

  • De LCD-shield-uitvoer en de 1-kanaals mono-audiomodus van de Portenta gecorrigeerd.

Portenta:

  • Een Ethernet-/SDRAM-probleem omzeild (rst_eth hoog gedreven) en de SDRAM-timingconfiguratie gecorrigeerd.

Hardware- en boardondersteuning

  • Arduino Portenta H7 — audio-opname met de onboard PDM-microfoon (SAI / PDM2PCM).

  • LCD — nieuwe parallelle-RGB-displaycontroller (LTDC ingeschakeld in de H7-build), HDMI-uitvoer via de TFP410, en ondersteuning voor een FT5X06-touchscreen-LCD.

Breaking API-wijzigingen

Voor gebruikers zichtbare API-breaks tussen v3.6.9 en v3.7.0. Scope: Python C-modules in modules/ en Python-bibliotheken in scripts/libraries/.

Elke wijziging is gemarkeerd met de bijbehorende impact:

  • minor — beperkte API; raakt alleen scripts die deze gebruikten.

  • gedrag — dezelfde API, andere resultaten; controleer afgestemde scripts opnieuw.

De wijzigingen zijn in die volgorde gegroepeerd op impact. Als je alleen je code wilt porten, ga dan naar de migratiechecklist aan het einde. Elke commit-hash linkt naar de bijbehorende diff op GitHub.

Oudere wiskundige hulpbibliotheken verwijderd (minor)

De hulpbibliotheken mtx, rv, ulinalg, umatrix en vec zijn verwijderd uit scripts/libraries ten gunste van ulab. Scripts die een van deze import-en zullen falen en moeten worden geport naar ulab.

Commits: 1f7da9272

remove_shadows() / chrominvar() / illuminvar() verwijderd (minor)

image.remove_shadows(), image.chrominvar() en image.illuminvar() zijn verwijderd zonder vervanging. Scripts die deze methoden aanroepen, moeten de aanroepen verwijderen.

Commits: 3173c2bb3

Signatuur van image.draw_image() herwerkt (minor)

image.draw_image() is herschreven bovenop een nieuwe schalingspijplijn. De oude positionele alpha- / enkelvoudige scale-argumenten en de eerdere positionele volgorde zijn niet langer van toepassing; gebruik de nieuwe keyword-vorm (x_scale= / y_scale= of x_size= / y_size=, alpha=, color_palette=, hint= …).

Commits: 3439f8824

Herschrijving van de LCD-module (minor)

De lcd-module is herschreven voor de nieuwe displaycontroller. lcd.init() neemt nu een display-type (LCD_NONE / LCD_SHIELD / LCD_DISPLAY) en nieuwe keyword-argumenten, en het constanten-/API-oppervlak is aanzienlijk gereorganiseerd. Oude shield-only scripts werken meestal nog, maar de standaardwaarden en het gedrag zijn gewijzigd — controleer LCD-scripts tegen de nieuwe type- / framesize-API.

Commits: 185538207

yuv_to_* trekt niet langer 128 af (gedrag)

image.yuv_to_binary() / yuv_to_grayscale() / yuv_to_rgb() / yuv_to_lab() behandelen het Y-tuple-element nu als een unsigned waarde van 0–255 in plaats van er 128 van af te trekken. Aanroepers moeten Y zonder de vorige −128-bias doorgeven om dezelfde kleuren als voorheen te krijgen.

Commits: dcf141192

Migratiechecklist

Voor een schone port naar v3.7.0 is het typische werk:

  1. Port het gebruik van mtx / rv / ulinalg / umatrix / vec naar ulab (de verwijdering van de wiskundebibliotheek).

  2. Verwijder aanroepen van image.remove_shadows() / chrominvar() / illuminvar() (de verwijderde image-methoden).

  3. Werk aanroepen van image.draw_image() bij naar de nieuwe keyword-signatuur (de draw_image-herwerking).

  4. Controleer LCD-scripts tegen de nieuwe lcd type- / framesize-API (de LCD-herschrijving).

  5. Laat de −128-bias vallen bij het doorgeven van Y aan yuv_to_* (de yuv_to_*-wijziging).

Alle andere scripts draaien ongewijzigd.