v4.0.0¶
v4.0.0 is de grote v3 → v4-release. Het introduceert de moderne multi-frame sensor-bufferings-API (dubbele / driedubbele buffering en een video-FIFO), een frame-complete-callback, een Bluetooth-module (NimBLE-stack) met Portenta-ondersteuning, de eerste MT9M114-cameradriver, MDMA-offloaded cameraopname, Bayer/JPEG-ondersteuning in image.draw_image() en een sprong naar MicroPython 1.15. De verouderde streamingmodus is verwijderd en sensor.set_windowing() is herwerkt — lees de ingrijpende wijzigingen hieronder.
Hoogtepunten¶
Multi-frame-buffering —
sensorkrijgt dubbele buffering, driedubbele buffering en een video-FIFO-modus voor hogere, soepelere framesnelheden.Frame-complete-callback — registreer een callback die afgaat zodra een nieuw frame klaar is, voor niet-blokkerende opnamepijplijnen.
Bluetooth — een
bluetooth-module gebouwd op de NimBLE-stack, ingeschakeld op de Arduino Portenta H7 (met een BLE-voorbeeld).MT9M114 — eerste camerasensordriver.
Snellere opname — MDMA-offload voor camera-data-opname;
draw_image()accepteert nu Bayer- en JPEG-bronnen/-bestemmingen.MicroPython 1.15 — de meegeleverde MicroPython is bijgewerkt van 1.13 naar 1.15.
Ingrijpend: de verouderde streamingmodus is verwijderd en
sensor.set_windowing()is herwerkt — zie de ingrijpende wijzigingen.
Nieuwe functies¶
Sensor-multi-buffering —
sensor.set_framebuffers()/sensor.get_framebuffers()en de modiSINGLE_BUFFER/DOUBLE_BUFFER/TRIPLE_BUFFER/VIDEO_FIFOtoegevoegd, plussensor.get_frame_available()voor dubbele, driedubbele en video-FIFO-opname.Frame-complete-callback —
sensor.set_frame_callback()toegevoegd zodat een Python-callback draait wanneer elk nieuw frame klaar is.Bluetooth — een
bluetooth-module toegevoegd, gebaseerd op de NimBLE-stack (NimBLE-submodule, CYW-BT-driver), ingeschakeld op de Arduino Portenta H7 met een BLE-voorbeeld.MT9M114 — de eerste MT9M114-camerasensordriver toegevoegd.
draw_image — debayering-ondersteuning en JPEG-kopieerondersteuning toegevoegd zodat
image.draw_image()Bayer- en JPEG-bron-/bestemmingsafbeeldingen accepteert.MDMA-opname-offload — camera-data-opname wordt naar MDMA geoffload voor hogere doorvoer.
Een kleurenpalet-argument kan nu worden uitgeschakeld door
-1door te geven (aangezienNoneis gereserveerd als een geldig argument).
Overige wijzigingen en verbeteringen¶
Overgeschakeld naar de nieuwe software-I2C-implementatie; afgestemd op de MicroPython-upstream; ulab-configuratie per board; basis-ingebouwde modules ingeschakeld voor OpenMV 2; eerlijkere frame buffer-uitleesvergrendeling; mutex-ondersteuning uitgebreid naar Cortex-M0/M0+ met een lock-timeout.
Bugfixes¶
Camera en beeldverwerking:
De FLIR Lepton-init-betrouwbaarheid op het Pure Thermal-board, de ImageIO JPEG-buffer-/pauzeafhandeling, de HM01B0 vflip/hmirror-instellingen, de JPEG-bufferflush wanneer een afbeelding ongeldig wordt gemaakt en een
cropped-flag die werd gezet wanneer de framesize ongeldig was, gerepareerd.
Systeem en connectiviteit:
Het legen van de USB-command en het reset-to-bootloader-command, de mutex-init, de UART-klokbron, de FatFS-codepage-define, de WINC1500 out-of-band ACK-afhandeling, WiFi-debugging en de Nano33 USB-PID gerepareerd; toegewijde analoge pads geïsoleerd.
Hardware- en boardondersteuning¶
MT9M114-camerasensor (eerste driver).
Arduino Portenta H7 — Bluetooth ingeschakeld (NimBLE) met een BLE-voorbeeld.
Arduino Nano RP2040 Connect / Nano 33 BLE Sense — WiFi-debug-flag uitgeschakeld waar niet ondersteund; blinky-voorbeeld toegevoegd; USB-PID-fix.
Ingrijpende API-wijzigingen¶
Voor de gebruiker zichtbare API-wijzigingen tussen v3.9.4 en v4.0.0. Scope: Python C-modules in modules/ en Python-bibliotheken in scripts/libraries/.
Elke wijziging is gemarkeerd met de impact ervan:
major — treft de meeste scripts; je zult vrijwel zeker code moeten porten.
minor — beperkte API; treft alleen scripts die het gebruikten.
behavior — dezelfde API, andere resultaten; controleer afgestelde scripts opnieuw.
Wijzigingen zijn in die volgorde gegroepeerd op impact. Als je alleen je code wilt porten, ga dan naar de migratiechecklist aan het eind. Elke commit-hash linkt naar de bijbehorende diff op GitHub.
Streamingmodus verwijderd (major)¶
De verouderde sensor-streamingmodus is verwijderd ten gunste van de nieuwe multi-frame-bufferings-API. Code die de streamingmodus inschakelde, moet overschakelen naar sensor.set_framebuffers() met DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO en de opname aansturen met sensor.snapshot() / sensor.get_frame_available().
Commits: a42f3a647
sensor.set_windowing() herwerkt (behavior)¶
sensor.set_windowing() is veel flexibeler gemaakt: het accepteert nu meerdere argumentvormen (een regio-tuple, of gecentreerde breedte/hoogte, of x, y, w, h) en bepaalt het venster relatief aan de huidige resolutie. Scripts die windowing-argumenten in de oude vaste vorm doorgaven, kunnen een andere regio selecteren en moeten opnieuw worden gecontroleerd.
Commits: 3e9c43554
MicroPython 1.13 → 1.15 (behavior)¶
De meegeleverde MicroPython-kern is bijgewerkt van 1.13 naar 1.15 (via 1.14). Het gedrag van de standaardbibliotheek en de taal volgt de upstream MicroPython 1.15; controleer scripts opnieuw die afhankelijk zijn van versiespecifiek micropython- / standaardmodulegedrag.
ImageIO-argument update_jpeg_buffer verwijderd (minor)¶
De ImageIO JPEG-bufferupdate is herwerkt om de buffer af te leiden uit het afbeeldingsbron-argument, en het expliciete update_jpeg_buffer-argument is verwijderd. Scripts die update_jpeg_buffer aan ImageIO doorgaven, moeten dat argument laten vallen.
Commits: 5c6937bd1
Migratiechecklist¶
Voor een schone port naar v4.0.0 is het typische werk:
Vervang elk gebruik van de verwijderde streamingmodus door de nieuwe
sensor.set_framebuffers()-multi-bufferings-API (streamingmodus verwijderd).Controleer
sensor.set_windowing()-aanroepen opnieuw tegen de herwerkte, flexibelere argumentafhandeling (de windowing-wijziging).Valideer scripts die afhankelijk zijn van versiespecifiek MicroPython-gedrag opnieuw tegen MicroPython 1.15 (de MicroPython-upgrade).
Laat het
update_jpeg_buffer-argument vallen uit ImageIO-aanroepen (de ImageIO-wijziging).
Alle andere scripts draaien ongewijzigd.