v4.5.3

v4.5.3 is een grote release: OV5640-autofocus, anti-aliased lijnen tekenen, een gemainlinede hardware-JPEG-decoder, grote i.MX RT (RT1060) capaciteitswinst en een brede reeks camera-/ISP-fixes. Verschillende zelden gebruikte image-methoden werden verwijderd en sommige ISP-/display-API’s veranderden — lees de breaking changes hieronder.

Hoogtepunten

  • OV5640-autofocus — ingeschakeld op OpenMV 4 / 4 Plus / RT1060 (sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS)), met een voorbeeld.

  • Anti-aliased draw_line() en een gemainlinede STM32 hardware-JPEG-decoder (snellere JPEG-decompressie).

  • OpenMV RT1060 kreeg ulab, ISP-bewerkingen, set_framerate() / set_frame_callback(), een veel grotere framebuffer en de CAN-driver.

  • Breaking: Image.div() / cartoon() / mul() werden verwijderd en sommige ISP-/display-API’s veranderden — zie de breaking changes.

Nieuwe functies

  • OV5640-autofocus — autofocus-firmware is ingeschakeld op OPENMV4, OPENMV4P en OPENMV RT1060; activeer het met sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS). Een nieuw voorbeeld 07-Sensor-Control/autofocus.py werd toegevoegd.

  • Anti-aliased lijnen tekenendraw_line() kreeg anti-aliasing.

  • Aangepaste SPI-displaycontrollersSPIDisplay accepteert nu een controller= keyword en biedt een bus_write hook voor aangepaste init-/commandosequenties.

  • Image.ccm() upgrade — accepteert nu geneste 3x3 / 4x3 / 3x4 / 4x4 matrices en ulab-arrays (met een optionele offset-rij per kanaal); een voorbeeld voor kleurcorrectie werd toegevoegd.

  • i.MX RT JPEG-opnamesensor.JPEG opname op Arduino Portenta/Nicla Vision/Giga, plus set_framerate() en set_frame_callback() op de mimxrt-port.

  • TFLite-modelvalidatie — modellen dragen nu een hash van de operatorvolgorde en de grootte van de operatorenset.

  • WiFi — CYW43-beveiligingsmodusconstanten toegevoegd; nieuwe i.MX RT board-control voorbeeldscripts (Pin/ADC/CAN/I2C/PWM/SPI/UART/…).

Overige wijzigingen en verbeteringen

  • MicroPython bijgewerkt naar 1.22; CMSIS bijgewerkt naar 5.9.0.

  • Gemainlinede STM32 hardware-JPEG-decoder — snellere JPEG-decompressie op de on-chip codec.

  • Geoptimaliseerde Image.invert() / negate() en binaire/wiskundige image-bewerkingen (CMSIS-intrinsics).

  • De rpc- en vl53l1x-bibliotheken werden portabel gemaakt (gebruik machine / time in plaats van pyb), zodat ze draaien op niet-STM32-ports.

  • DMA-versnelde framebuffer-memcpy op OpenMV H7 / H7 Plus / Pro / Pure Thermal en Arduino Giga / Nicla Vision / Portenta H7; STM32 scant nu eenmaal per scan naar I2C-apparaten voor sneller opstarten.

Bugfixes

Camera en sensoren:

  • STM32 camera-XCLK gefixt naar een echte 50%-duty-cycle en een bug wanneer de cameraklokfrequentie op nul wordt ingesteld; Bayer crop+transpose, YUV422-kleurverschuiving en set_windowing() op de mimxrt-port gefixt.

  • De GC2145 chip-ID-probe en hmirror/vflip op geroteerde montages gefixt; PAJ6100 op de RT1062 en een PixArt PAJ7620/PAW3902 SPI-bufferoverflow gefixt.

Beeldverwerking:

  • find_rects() roi-clipping, morph() fractionele offset-afkapping, image.gamma() contrast-/helderheidsdefaults, get_threshold() A/B-offsets op RGB565 en JPEG-decodering van afmetingen die geen veelvoud van 8 zijn gefixt.

Systeem en bibliotheken:

  • machine.LED.value() zonder argument retourneert nu de LED-status in plaats van die te wissen; SPI SSEL deinit op een gedeelde bus, machine.deepsleep() op de RT1062, een TF-crash bij ontbrekende operatoren en WINC1500/ninaw10 NIC-auto-activering bij connect() gefixt.

Hardware- en boardondersteuning

  • OpenMV RT1060 — ulab en ISP-bewerkingen ingeschakeld, grotere framebuffer (10M→20M) / fb_alloc (2M→11M), CAN-driver hersteld, meer heap.

  • Arduino GIGA — GC2145-cameraondersteuning, met GC2145/OV5640 automatische detectie (ze delen een I2C-adres).

  • i.MX RTsensor.JPEG opnameondersteuning.

Breaking API-wijzigingen

Voor de gebruiker zichtbare API-breaks tussen v4.5.2 en v4.5.3. Scope: Python C-modules in modules/ en Python-bibliotheken in scripts/libraries/.

Elke wijziging is getagd met de impact ervan:

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

  • behavior — dezelfde API, andere resultaten; controleer afgestelde scripts opnieuw.

Wijzigingen zijn gegroepeerd op impact in die volgorde. 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.

Verwijderde image-methoden (minor)

Image.div(), Image.cartoon() (en het bijbehorende voorbeeld) en Image.mul() werden verwijderd.

Commits: 7c932602e, 055a468b8, 4fe7fb63b

Display-module-API (minor)

De verouderde udisplay modulenaam-fallback werd verwijderd — de module is alleen geregistreerd als display. De alleen-DSI dsi_write() / dsi_read() methoden werden vervangen door bus_write() / bus_read(), die nu beschikbaar zijn op alle displaycontrollers.

Commits: 7df6694c3, 7d1f378a0

MQTT- en tf.regression-API-wijzigingen (minor)

De MQTTClient van de mqtt-bibliotheek werd herwerkt: port is nu vereist, nieuwe ssl_params / callback constructor-keywords en een timeout argument op connect() werden toegevoegd, de oude ssl= / port=0 defaults werden verwijderd, en check_msg() is nu niet-blokkerend. tf.regression() werd herschreven — de signatuur is nu regression(model, array) en het verwerkt 1D-/2D-/3D- en gekwantiseerde (int8) modellen.

Commits: d12874c63, c5ec576c1

ISP-/sensorgedragswijzigingen (behavior)

Image.awb() werd herwerkt — gray-world (default) versus white-patch (max=True) is nu expliciet, en het max argument plus de gamma / contrast / brightness argumenten van Image.gamma() zijn nu keyword-only (positionele aanroepen moeten worden bijgewerkt). Image-transpose is nu uitgeschakeld voor YUV422 (het produceerde voorheen onjuiste uitvoer) en de YUV422-kleurverschuiving werd gecorrigeerd om overeen te komen met Bayer. Het STM32 JPEG-pad genereert nu een fout bij een JPEG-geometriemismatch in plaats van een corrupte afbeelding te produceren, en WiFi AP-modus past nu een standaardbeveiligingsmodus toe op de STM32- en i.MX RT-ports.

Commits: 36d5cecbd, 00500ccde, c1eeaefd6, 333fb2b5f, 55cab8733, c7d40f6af

Migratiechecklist

Voor een schone port naar v4.5.3 is het typische werk:

  1. Stop met het gebruik van Image.div() / cartoon() / mul() (de verwijderde methoden).

  2. Importeer de display-module als display en schakel dsi_write/ dsi_read om naar bus_write/bus_read (de display-API-wijziging).

  3. Werk de constructie van MQTTClient bij (port is vereist; ssl_params/callback) en eventuele tf.regression() aanroepen (de bibliotheek-API-wijzigingen).

  4. Geef max van awb() en gamma/contrast/ brightness van gamma() door als keyword-argumenten, en controleer YUV422/transpose en AP-modus-beveiligingsaannames opnieuw (de ISP-/sensorwijzigingen).