v4.5.3#

v4.5.3 je rozsáhlé vydání: autofokus OV5640, kreslení čar s vyhlazováním, do hlavní větve začleněný hardwarový JPEG dekodér, výrazné rozšíření možností i.MX RT (RT1060) a široká sada oprav kamery/ISP. Několik zřídka používaných metod obrazu bylo odstraněno a některá ISP/display API se změnila — přečtěte si níže uvedené zásadní změny.

Hlavní novinky#

  • Autofokus OV5640 — povolen na OpenMV 4 / 4 Plus / RT1060 (sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS)), s příkladem.

  • Vyhlazené (anti-aliased) draw_line() a do hlavní větve začleněný hardwarový JPEG dekodér STM32 (rychlejší dekomprese JPEG).

  • OpenMV RT1060 získalo ulab, ISP operace, set_framerate() / set_frame_callback(), mnohem větší snímkový buffer (frame buffer) a CAN ovladač.

  • Zásadní změna: Image.div() / cartoon() / mul() byly odstraněny a některá ISP/display API se změnila — viz zásadní změny.

Nové funkce#

  • Autofokus OV5640 — firmware autofokusu je povolen na OPENMV4, OPENMV4P a OPENMV RT1060; spustíte jej pomocí sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS). Byl přidán nový příklad 07-Sensor-Control/autofocus.py.

  • Kreslení čar s vyhlazovánímdraw_line() získalo vyhlazování (anti-aliasing).

  • Vlastní SPI display kontrolérySPIDisplay nyní přijímá klíčové slovo controller= a vystavuje hook bus_write pro vlastní inicializační/příkazové sekvence.

  • Vylepšení Image.ccm() — nyní přijímá vnořené matice 3x3 / 4x3 / 3x4 / 4x4 a ulab pole (s volitelným řádkem offsetu pro každý kanál); přidán příklad korekce barev.

  • Záznam JPEG na i.MX RT — záznam sensor.JPEG na Arduino Portenta/Nicla Vision/Giga, plus set_framerate() a set_frame_callback() na portu mimxrt.

  • Validace TFLite modelu — modely nyní nesou hash pořadí operátorů a velikost množiny operátorů.

  • WiFi — přidány konstanty režimů zabezpečení CYW43; nové příklady skriptů pro řízení desky i.MX RT (Pin/ADC/CAN/I2C/PWM/SPI/UART/…).

Další změny a vylepšení#

  • MicroPython aktualizován na 1.22; CMSIS aktualizováno na 5.9.0.

  • Do hlavní větve začleněný hardwarový JPEG dekodér STM32 — rychlejší dekomprese JPEG na čipovém kodeku.

  • Optimalizovány Image.invert() / negate() a binární/matematické operace s obrazem (CMSIS intrinsics).

  • Knihovny rpc a vl53l1x byly upraveny pro přenositelnost (místo pyb používají machine / time), takže běží i na portech mimo STM32.

  • DMA akcelerovaný memcpy snímkového bufferu na OpenMV H7 / H7 Plus / Pro / Pure Thermal a Arduino Giga / Nicla Vision / Portenta H7; STM32 nyní skenuje I2C zařízení jednou za skenování pro rychlejší start.

Opravy chyb#

Kamera a senzory:

  • Opraveno XCLK kamery STM32 na skutečný 50% pracovní cyklus a chyba, když je frekvence hodin kamery nastavena na nulu; opraveny Bayer crop+transpozice, posun barev YUV422 a set_windowing() na portu mimxrt.

  • Opraveno čtení chip-ID GC2145 a hmirror/vflip na otočených úchytech; opraveno PAJ6100 na RT1062 a přetečení SPI bufferu PixArt PAJ7620/PAW3902.

Zpracování obrazu:

  • Opraveno ořezávání roi v find_rects(), zkracování zlomkového offsetu v morph(), výchozí hodnoty kontrastu/jasu v image.gamma(), A/B offsety v get_threshold() na RGB565 a dekódování JPEG rozměrů, které nejsou násobkem 8.

Systém a knihovny:

  • machine.LED.value() bez argumentu nyní vrací stav LED místo jeho vymazání; opraven deinit SPI SSEL na sdílené sběrnici, machine.deepsleep() na RT1062, pád TF při chybějících operátorech a automatická aktivace NIC WINC1500/ninaw10 při connect().

Hardware a podpora desek#

  • OpenMV RT1060 — povoleny ulab a ISP operace, větší snímkový buffer (10M→20M) / fb_alloc (2M→11M), obnoven CAN ovladač, více haldy.

  • Arduino GIGA — podpora kamery GC2145, s automatickou detekcí GC2145/OV5640 (sdílejí I2C adresu).

  • i.MX RT — podpora záznamu sensor.JPEG.

Zásadní změny API#

Uživatelsky viditelné změny API mezi v4.5.2 a v4.5.3. Rozsah: Python C-moduly v modules/ a Python knihovny v scripts/libraries/.

Každá změna je označena svým dopadem:

  • minor — úzké API; ovlivňuje pouze skripty, které jej používaly.

  • behavior — stejné API, jiné výsledky; znovu zkontrolujte vyladěné skripty.

Změny jsou seskupeny podle dopadu v tomto pořadí. Pokud chcete jen přenést svůj kód, přejděte na kontrolní seznam migrace na konci. Každý hash commitu odkazuje na svůj diff na GitHubu.

Odstraněné metody obrazu (minor)#

Image.div(), Image.cartoon() (a její příklad) a Image.mul() byly odstraněny.

Commits: 7c932602e, 055a468b8, 4fe7fb63b

API modulu display (minor)#

Starší záložní název modulu udisplay byl odstraněn — modul je registrován pouze jako display. Metody dsi_write() / dsi_read() určené pouze pro DSI byly nahrazeny metodami bus_write() / bus_read(), které jsou nyní dostupné na všech display kontrolérech.

Commits: 7df6694c3, 7d1f378a0

Změny API MQTT a tf.regression (minor)#

MQTTClient knihovny mqtt byl přepracován: port je nyní povinný, byla přidána nová konstruktorová klíčová slova ssl_params / callback a argument timeout u connect(), staré výchozí hodnoty ssl= / port=0 byly odstraněny a check_msg() je nyní neblokující. tf.regression() byla přepsána — její signatura je nyní regression(model, array) a zpracovává 1D/2D/3D a kvantované (int8) modely.

Commits: d12874c63, c5ec576c1

Změny chování ISP / senzoru (behavior)#

Image.awb() byla přepracována — gray-world (výchozí) vs white-patch (max=True) je nyní explicitní a argument max plus argumenty gamma / contrast / brightness metody Image.gamma() jsou nyní pouze klíčové (poziční volání musí být upravena). Transpozice obrazu je nyní zakázána pro YUV422 (dříve produkovala nesprávný výstup) a posun barev YUV422 byl opraven tak, aby odpovídal Bayeru. Cesta JPEG na STM32 nyní vyvolá chybu při nesouladu geometrie JPEG místo produkce poškozeného obrazu a režim WiFi AP nyní aplikuje výchozí režim zabezpečení na portech STM32 a i.MX RT.

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

Kontrolní seznam migrace#

Pro čistý přechod na v4.5.3 je typická práce následující:

  1. Přestaňte používat Image.div() / cartoon() / mul() (odstraněné metody).

  2. Importujte modul display jako display a přepněte dsi_write/ dsi_read na bus_write/bus_read (změna API display).

  3. Aktualizujte konstrukci MQTTClient (port je povinný; ssl_params/callback) a všechna volání tf.regression() (změny API knihoven).

  4. Předávejte awb() max a gamma() gamma/contrast/ brightness jako klíčové argumenty a znovu zkontrolujte předpoklady YUV422/transpozice a zabezpečení režimu AP (změny ISP/senzoru).