v4.5.1

v4.5.1 adaugă indicații de desenare pentru orientarea/aspectul imaginii, încărcarea imaginilor direct dintr-o cale de fișier, un ioctl pentru câmpul vizual larg GC2145 și un nou API de controler al iluminării de fundal. De asemenea, reproiectează constructorul Image(), API-urile display și analiza argumentelor modulelor — citiți modificările incompatibile mai jos.

Puncte importante

  • Indicații de desenaredraw_image() a câștigat indicații de orientare (HMIRROR/VFLIP/TRANSPOSE, ROTATE_90/180/270) și de scalare a aspectului (SCALE_ASPECT_KEEP/EXPAND/IGNORE).

  • Încărcarea imaginilor de pe discdraw_image() / display.write() acceptă un șir cu calea unui fișier.

  • Control al iluminării de fundal — noi clase DACBacklight / PWMBacklight și un argument backlight= pentru afișaj.

  • Incompatibil: constructorul Image(), API-urile display și analiza argumentelor modulelor s-au modificat — vedeți modificările incompatibile.

Funcționalități noi

  • Indicații de orientare pentru draw_image()image.HMIRROR, image.VFLIP, image.TRANSPOSE, plus variantele de comoditate image.ROTATE_90 / ROTATE_180 / ROTATE_270.

  • Indicații de aspect pentru draw_image()image.SCALE_ASPECT_KEEP / SCALE_ASPECT_EXPAND / SCALE_ASPECT_IGNORE pentru încadrare / extindere / întindere.

  • Constante de paletăimage.PALETTE_RAINBOW și image.PALETTE_IRONBOW (mutate în modulul image).

  • Câmp vizual larg — noi ioctl-uri sensor.IOCTL_SET_FOV_WIDE / IOCTL_GET_FOV_WIDE (pe GC2145, scalare a senzorului de până la 5x).

  • Încărcare de pe discdraw_image() și display.write() acceptă un șir cu calea unui fișier-imagine sursă, încărcându-l direct din stocare.

  • Controlere ale iluminării de fundal — noi clase DACBacklight și PWMBacklight (importabile din display) și un argument exclusiv cu cuvânt-cheie backlight= pe constructorii afișajelor SPI/paralel.

Alte modificări și îmbunătățiri

  • Driverul de afișaj DSI ST7701 a fost mutat în propriul modul st7701.py (în continuare importabil prin from display import *) și este înghețat pe Arduino Giga; driverul IMU lsm9ds1 a fost înghețat pe Arduino Nano 33 BLE Sense.

  • Camerele MT9V022 / MT9V034 (cu obturator global) aplică acum corecția zgomotului pe rânduri pentru o calitate mai bună a imaginii.

  • Volumul de stocare în masă USB i.MX RT este acum etichetat ca disc OpenMV.

Corectări de erori

Cameră și senzori:

  • S-a corectat detectarea colțurilor (find_keypoints() FAST/AGAST) pe imagini mai înalte de 480 de rânduri — tamponul per rând este acum dimensionat după înălțimea imaginii.

  • S-a adăugat suport pentru pinul FSYNC pentru snapshot() sincronizat pe cadre pe i.MX RT (OpenMV RT1060) și s-au corectat pinii SPI4 MOSI/MISO inversați pe RT1060.

Afișaj și video:

  • S-a corectat ordinea argumentelor constructorului SPIDisplay (bgr, byte_swap, triple_buffer erau aplicate parametrilor greșiți).

  • S-a corectat coruperea imaginii la shield-ul TV când se desenează o imagine cu un dreptunghi specificat, precum și limitele incorecte ale cadrelor MJPEG la înregistrarea cadrelor scalate.

Rețelistică:

  • Modul AP WiFi WINC nu mai impune restricția învechită de tip doar-WEP — modurile AP deschis și WPA funcționează cu gestionarea corectă a PSK.

Suport hardware și plăci

  • OpenMV RT1060 — pin FSYNC și pini SPI4 corectați.

  • Arduino GIGA — soluție de fiabilitate pentru QSPI; afișaj ST7701 înghețat.

  • Arduino Nano 33 BLE Sense — driver IMU lsm9ds1 înghețat.

Modificări incompatibile de API

Modificări de API vizibile pentru utilizator între v4.5.0 și v4.5.1. Domeniu: module C Python din modules/ și biblioteci Python din scripts/libraries/.

Fiecare modificare este etichetată cu impactul său:

  • minor — API restrâns; afectează doar scripturile care îl foloseau.

  • comportament — același API, rezultate diferite; reverificați scripturile reglate fin.

Modificările sunt grupate după impact în această ordine. Dacă doriți doar să vă portați codul, săriți la lista de verificare pentru migrare de la final. Fiecare hash de commit trimite către diff-ul său pe GitHub.

Constructorul Image() și API-urile display (minor)

Constructorul image.Image a fost reproiectat pentru a folosi argumente cu cuvânt-cheie (height, pixformat, buffer=, copy_to_fb=); poate acum construi o imagine dintr-un bytearray/tampon existent, iar un tampon este necesar pentru formatele comprimate. display.write() a fost reproiectat: x_scale/y_scale primesc acum un float (raport de scalare) sau un int (dimensiunea țintă în pixeli), iar cuvintele-cheie separate x_size/y_size au fost eliminate. Primul argument pozițional al WINC.connect() a fost redenumit essidssid, iar rezultatele scanării WiFi WINC s-au modificat în (ssid_bytes, bssid_bytes, channel, rssi, security, N) (SSID/BSSID sunt acum bytes; BSSID nu mai este un șir MAC formatat).

Commit-uri: 6752c95ac, 161737092, 8178c237c, b6cdf8de1

Intervalul iluminării de fundal, scalarea și argumentele exclusiv cu cuvânt-cheie (comportament)

Display.backlight() primește acum o intensitate 0–100 (0 = oprit, 100 = maxim) în loc de 0–255, generând ValueError în afara intervalului. Valorile întregi x_scale/y_scale sunt acum tratate ca factor de scalare multiplicativ (la fel ca float-urile), nu ca dimensiune țintă în pixeli — acest lucru afectează fir.snapshot()/draw_ir(), tof.snapshot()/ draw_depth(), display și scalarea tv. Analiza argumentelor în modulele sensor, fir, tof, tv, mjpeg, gif, imageio, tf și audio a fost unificată, transformând mai multe opțiuni anterior poziționale în exclusiv cu cuvânt-cheie (numele, valorile implicite și comportamentul rămân altfel neschimbate).

Commit-uri: 391ec443f, 8bd25d6cd, 477312656, 08bf62a32, a4c0f20bf, 9b411a66d, 3d679f5a6, d15fc6b8d, 555e67ecd

Listă de verificare pentru migrare

Pentru o portare curată la v4.5.1, munca tipică este:

  1. Actualizați construirea Image() la noua formă cu cuvinte-cheie, treceți display.write() de la x_size/y_size și redenumiți WINC.connect() essidssid (gestionați noile tupluri de scanare bazate pe bytes) (modificările de constructor/display/WINC).

  2. Rescalați apelurile Display.backlight() la 0–100, reverificați orice utilizare a valorilor întregi x_scale/y_scale și transmiteți opțiunile de modul anterior poziționale drept cuvinte-cheie (modificările de comportament).