v4.5.3

v4.5.3 är en stor utgåva: OV5640-autofokus, kantutjämnad linjeritning, en mainline-integrerad hårdvarubaserad JPEG-avkodare, stora kapacitetsförbättringar för i.MX RT (RT1060) och en bred uppsättning kamera-/ISP-fixar. Flera sällan använda bildmetoder togs bort och vissa ISP-/display-API:er ändrades — läs de brytande ändringarna nedan.

Höjdpunkter

  • OV5640-autofokus — aktiverat på OpenMV 4 / 4 Plus / RT1060 (sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS)), med ett exempel.

  • Kantutjämnad draw_line() och en mainline-integrerad hårdvarubaserad JPEG-avkodare för STM32 (snabbare JPEG-dekomprimering).

  • OpenMV RT1060 fick ulab, ISP-operationer, set_framerate() / set_frame_callback(), en mycket större bildbuffert och CAN-drivrutinen.

  • Brytande: Image.div() / cartoon() / mul() togs bort och vissa ISP-/display-API:er ändrades — se de brytande ändringarna.

Nya funktioner

  • OV5640-autofokus — autofokus-firmware är aktiverad på OPENMV4, OPENMV4P och OPENMV RT1060; utlös den med sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS). Ett nytt exempel 07-Sensor-Control/autofocus.py lades till.

  • Kantutjämnad linjeritningdraw_line() fick kantutjämning.

  • Anpassade SPI-displaystyrenheterSPIDisplay accepterar nu nyckelordet controller= och exponerar en bus_write-hook för anpassade init-/kommandosekvenser.

  • Image.ccm()-uppgradering — accepterar nu nästlade 3x3-/4x3-/3x4-/4x4-matriser och ulab-arrayer (med en valfri offset-rad per kanal); ett exempel på färgkorrigering lades till.

  • i.MX RT JPEG-infångningsensor.JPEG-infångning på Arduino Portenta/Nicla Vision/Giga, plus set_framerate() och set_frame_callback() på mimxrt-porten.

  • TFLite-modellvalidering — modeller bär nu en hash för operatorordning och en operatoruppsättningsstorlek.

  • WiFi — lade till CYW43-konstanter för säkerhetsläge; nya exempelskript för kortstyrning på i.MX RT (Pin/ADC/CAN/I2C/PWM/SPI/UART/…).

Övriga ändringar och förbättringar

  • MicroPython uppdaterad till 1.22; CMSIS uppdaterad till 5.9.0.

  • Mainline-integrerad hårdvarubaserad JPEG-avkodare för STM32 — snabbare JPEG-dekomprimering på den inbyggda codecen.

  • Optimerade Image.invert() / negate() och binära/matematiska bildoperationer (CMSIS-intrinsics).

  • Biblioteken rpc och vl53l1x gjordes portabla (använder machine / time istället för pyb), så att de körs på icke-STM32-portar.

  • DMA-accelererad memcpy av bildbuffert på OpenMV H7 / H7 Plus / Pro / Pure Thermal och Arduino Giga / Nicla Vision / Portenta H7; STM32 skannar nu I2C-enheter en gång per skanning för snabbare uppstart.

Buggfixar

Kamera och sensorer:

  • Korrigerade STM32-kamerans XCLK till en sann 50 % arbetscykel och en bugg när kamerans klockfrekvens sätts till noll; korrigerade Bayer-beskärning+transponering, YUV422-färgskift och set_windowing() på mimxrt-porten.

  • Korrigerade GC2145-chip-ID-avkänningen och hmirror/vflip på roterade monteringar; korrigerade PAJ6100 på RT1062 och ett SPI-buffertöverflöde för PixArt PAJ7620/PAW3902.

Bildbehandling:

  • Korrigerade find_rects()-roi-beskärning, trunkering av fraktionerad offset i morph(), standardvärden för kontrast/ljusstyrka i image.gamma(), A/B-offset i get_threshold() på RGB565 och JPEG-avkodning av dimensioner som inte är en multipel av 8.

System och bibliotek:

  • machine.LED.value() utan argument returnerar nu LED-tillståndet istället för att rensa det; korrigerade SPI-SSEL-deinit på en delad buss, machine.deepsleep() på RT1062, en TF-krasch vid saknade operatorer och WINC1500/ninaw10-NIC:ens autoaktivering vid connect().

Hårdvaru- och kortstöd

  • OpenMV RT1060 — ulab och ISP-operationer aktiverade, större bildbuffert (10M→20M) / fb_alloc (2M→11M), CAN-drivrutin återställd, mer heap.

  • Arduino GIGA — stöd för GC2145-kamera, med automatisk detektering av GC2145/OV5640 (de delar en I2C-adress).

  • i.MX RT — stöd för sensor.JPEG-infångning.

Brytande API-ändringar

Användarsynliga API-brytningar mellan v4.5.2 och v4.5.3. Omfattning: Python-C-moduler i modules/ och Python-bibliotek i scripts/libraries/.

Varje ändring är märkt med sin påverkan:

  • minor — smalt API; påverkar endast skript som använde det.

  • behavior — samma API, annorlunda resultat; kontrollera inställda skript på nytt.

Ändringarna är grupperade efter påverkan i den ordningen. Om du bara vill porta din kod, hoppa till migrationschecklistan i slutet. Varje commit-hash länkar till sin diff på GitHub.

Borttagna bildmetoder (minor)

Image.div(), Image.cartoon() (och dess exempel) och Image.mul() togs bort.

Commits: 7c932602e, 055a468b8, 4fe7fb63b

Display-modulens API (minor)

Den äldre reservlösningen med modulnamnet udisplay togs bort — modulen registreras nu endast som display. De DSI-exklusiva metoderna dsi_write() / dsi_read() ersattes av bus_write() / bus_read(), som nu är tillgängliga på alla displaystyrenheter.

Commits: 7df6694c3, 7d1f378a0

API-ändringar för MQTT och tf.regression (minor)

mqtt-bibliotekets MQTTClient omarbetades: port är nu obligatoriskt, nya konstruktor-nyckelord ssl_params / callback och ett timeout-argument på connect() lades till, de gamla standardvärdena ssl= / port=0 togs bort, och check_msg() är nu icke-blockerande. tf.regression() skrevs om — dess signatur är nu regression(model, array) och den hanterar 1D-/2D-/3D- och kvantiserade (int8) modeller.

Commits: d12874c63, c5ec576c1

Beteendeändringar för ISP / sensor (behavior)

Image.awb() omarbetades — gråvärld (standard) kontra vitfält (max=True) är nu explicit, och argumentet max plus argumenten gamma / contrast / brightness i Image.gamma() är nu endast nyckelord (positionella anrop måste uppdateras). Bildtransponering är nu inaktiverad för YUV422 (den producerade tidigare felaktig utdata) och YUV422-färgskiftet korrigerades för att matcha Bayer. STM32-JPEG-vägen ger nu ett fel vid en geometriavvikelse i JPEG istället för att producera en korrupt bild, och WiFi AP-läge tillämpar nu ett standardsäkerhetsläge på STM32- och i.MX RT-portarna.

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

Migrationschecklista

För en ren portning till v4.5.3 är det typiska arbetet:

  1. Sluta använda Image.div() / cartoon() / mul() (de borttagna metoderna).

  2. Importera display-modulen som display och byt dsi_write/ dsi_read till bus_write/bus_read (display-API-ändringen).

  3. Uppdatera konstruktionen av MQTTClient (port är obligatoriskt; ssl_params/callback) och eventuella tf.regression()-anrop (biblioteks-API-ändringarna).

  4. Skicka awb()-max och gamma()-gamma/contrast/ brightness som nyckelordsargument, och kontrollera på nytt YUV422/transponering och säkerhetsantaganden för AP-läge (ISP-/sensor-ändringarna).