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).