v4.5.3

v4.5.3 je veliko izdanje: OV5640 autofokus, crtanje linija s anti-aliasingom, integrirani hardverski JPEG dekoder, veliki dobici u mogućnostima i.MX RT (RT1060) te širok skup ispravaka kamere/ISP-a. Nekoliko rijetko korištenih metoda za slike uklonjeno je, a neki ISP/display API-ji su promijenjeni — pročitajte prelomne promjene u nastavku.

Najvažnije

  • OV5640 autofokus — omogućen na OpenMV 4 / 4 Plus / RT1060 (sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS)), uz primjer.

  • draw_line() s anti-aliasingom i integrirani STM32 hardverski JPEG dekoder (brža JPEG dekompresija).

  • OpenMV RT1060 dobio je ulab, ISP operacije, set_framerate() / set_frame_callback(), znatno veći međuspremnik slike i CAN upravljački program.

  • Prelomno: Image.div() / cartoon() / mul() su uklonjeni, a neki ISP/display API-ji su promijenjeni — pogledajte prelomne promjene.

Nove značajke

  • OV5640 autofokus — firmware za autofokus omogućen je na OPENMV4, OPENMV4P i OPENMV RT1060; pokrenite ga s sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS). Dodan je novi primjer 07-Sensor-Control/autofocus.py.

  • Crtanje linija s anti-aliasingomdraw_line() je dobio anti-aliasing.

  • Prilagođeni SPI display kontroleriSPIDisplay sada prihvaća ključnu riječ controller= i izlaže bus_write hook za prilagođene init/command sekvence.

  • Nadogradnja Image.ccm() — sada prihvaća ugniježđene 3x3 / 4x3 / 3x4 / 4x4 matrice i ulab nizove (s opcionalnim redom pomaka po kanalu); dodan je primjer korekcije boje.

  • i.MX RT JPEG snimanjesensor.JPEG snimanje na Arduino Portenta/Nicla Vision/Giga, uz set_framerate() i set_frame_callback() na mimxrt portu.

  • Validacija TFLite modela — modeli sada nose hash redoslijeda operatora i veličinu skupa operatora.

  • WiFi — dodane CYW43 konstante za sigurnosni način rada; nove i.MX RT primjer skripte za upravljanje pločom (Pin/ADC/CAN/I2C/PWM/SPI/UART/…).

Ostale promjene i poboljšanja

  • MicroPython ažuriran na 1.22; CMSIS ažuriran na 5.9.0.

  • Integrirani STM32 hardverski JPEG dekoder — brža JPEG dekompresija na ugrađenom kodeku.

  • Optimizirani Image.invert() / negate() i binarne/matematičke operacije na slici (CMSIS intrinzike).

  • Biblioteke rpc i vl53l1x učinjene su prenosivima (koriste machine / time umjesto pyb), pa rade na portovima koji nisu STM32.

  • DMA-ubrzani memcpy međuspremnika slike na OpenMV H7 / H7 Plus / Pro / Pure Thermal i Arduino Giga / Nicla Vision / Portenta H7; STM32 sada skenira I2C uređaje jednom po skeniranju za brže pokretanje.

Ispravci grešaka

Kamera i senzori:

  • Ispravljen je STM32 XCLK kamere na pravi 50% radni ciklus te greška kada je frekvencija takta kamere postavljena na nulu; ispravljeni su Bayer crop+transpose, YUV422 pomak boje i set_windowing() na mimxrt portu.

  • Ispravljeno je očitavanje chip-ID-a GC2145 te hmirror/vflip na zarotiranim nosačima; ispravljen je PAJ6100 na RT1062 i prelijevanje SPI međuspremnika na PixArt PAJ7620/PAW3902.

Obrada slike:

  • Ispravljeni su roi clipping kod find_rects(), odsijecanje frakcijskog pomaka kod morph(), zadane vrijednosti kontrasta/svjetline kod image.gamma(), A/B pomaci kod get_threshold() na RGB565 te JPEG dekodiranje dimenzija koje nisu višekratnik broja 8.

Sustav i biblioteke:

  • machine.LED.value() bez argumenta sada vraća stanje LED-a umjesto da ga briše; ispravljeni su SPI SSEL deinit na dijeljenoj sabirnici, machine.deepsleep() na RT1062, TF rušenje kod nedostajućih operatora te WINC1500/ninaw10 NIC automatska aktivacija pri connect().

Hardver i podrška za ploče

  • OpenMV RT1060 — omogućeni ulab i ISP operacije, veći međuspremnik slike (10M→20M) / fb_alloc (2M→11M), vraćen CAN upravljački program, više heapa.

  • Arduino GIGA — podrška za kameru GC2145, uz automatsko prepoznavanje GC2145/OV5640 (dijele I2C adresu).

  • i.MX RT — podrška za sensor.JPEG snimanje.

Prelomne promjene API-ja

Korisniku vidljivi prekidi API-ja između v4.5.2 i v4.5.3. Opseg: Python C-moduli u modules/ i Python biblioteke u scripts/libraries/.

Svaka promjena označena je svojim utjecajem:

  • minor — uski API; utječe samo na skripte koje su ga koristile.

  • behavior — isti API, drugačiji rezultati; ponovno provjerite ugođene skripte.

Promjene su grupirane prema utjecaju tim redoslijedom. Ako samo želite prenijeti svoj kod, prijeđite na kontrolni popis za migraciju na kraju. Svaki hash commita povezuje se sa svojim diffom na GitHubu.

Uklonjene metode za slike (minor)

Image.div(), Image.cartoon() (i njegov primjer) te Image.mul() su uklonjeni.

Commiti: 7c932602e, 055a468b8, 4fe7fb63b

API display modula (minor)

Stari rezervni naziv modula udisplay je uklonjen — modul je registriran samo kao display. Metode dsi_write() / dsi_read(), namijenjene samo DSI-ju, zamijenjene su s bus_write() / bus_read(), koje su sada dostupne na svim display kontrolerima.

Commiti: 7df6694c3, 7d1f378a0

Promjene API-ja MQTT-a i tf.regression (minor)

MQTTClient iz biblioteke mqtt je preuređen: port je sada obavezan, dodane su nove konstruktorske ključne riječi ssl_params / callback te argument timeout na connect(), stare zadane vrijednosti ssl= / port=0 su uklonjene, a check_msg() sada ne blokira. tf.regression() je preinačen — njegov potpis sada je regression(model, array) i obrađuje 1D/2D/3D te kvantizirane (int8) modele.

Commiti: d12874c63, c5ec576c1

Promjene ponašanja ISP-a / senzora (behavior)

Image.awb() je preuređen — gray-world (zadano) naspram white-patch (max=True) sada je eksplicitno, a argument max te argumenti gamma / contrast / brightness metode Image.gamma() sada su samo ključne riječi (pozicijske pozive treba ažurirati). Transpose slike sada je onemogućen za YUV422 (prethodno je davao netočan izlaz), a YUV422 pomak boje ispravljen je da odgovara Bayeru. STM32 JPEG put sada javlja grešku pri neslaganju JPEG geometrije umjesto da proizvede oštećenu sliku, a WiFi AP način sada primjenjuje zadani sigurnosni način na STM32 i i.MX RT portovima.

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

Kontrolni popis za migraciju

Za čist prijenos na v4.5.3 uobičajeni posao je:

  1. Prestanite koristiti Image.div() / cartoon() / mul() (uklonjene metode).

  2. Uvezite display modul kao display i prebacite dsi_write/ dsi_read na bus_write/bus_read (promjena display API-ja).

  3. Ažurirajte konstrukciju MQTTClient (port je obavezan; ssl_params/callback) i sve pozive tf.regression() (promjene API-ja biblioteka).

  4. Proslijedite awb() max te gamma() gamma/contrast/ brightness kao argumente ključne riječi te ponovno provjerite pretpostavke o YUV422/transpose i sigurnosti AP načina (promjene ISP-a/senzora).