v3.3.0

v3.3.0 je golemo izdanje. Dodaje punu podršku za FLIR Lepton termalnu kameru s novim sučeljem sensor.ioctl() i paletama boja, tv modul za SPI video izlaz, okidani način rada s globalnim zatvaračem, velik skup novih metoda za crtanje/analizu iz modula image (gamma_corr(), draw_ellipse(), draw_edges(), mnoga svojstva mrlja) te nove biblioteke za ToF / motore / linalg. cpufreq API je preuređen, a sensor.set_framesize() sada baca iznimku — pročitajte nekompatibilne promjene u nastavku.

Istaknuto

  • FLIR Lepton — puna podrška za termalnu kameru putem novog sučelja sensor.ioctl(), paleta boja i image.to_rainbow().

  • tv modul — SPI TV / kompozitni video izlaz.

  • Okidani način rada s globalnim zatvaračem — okidano snimanje s MT9V034 putem sensor.ioctl().

  • Obrada slikegamma_corr(), draw_ellipse(), draw_edges(), alfa stapanje u draw_image() i mnoga nova svojstva mrlja.

  • Nove biblioteke — VL53L1X ToF udaljenost, TB6612 upravljač motora, micro-linalg.

  • Nekompatibilno: cpufreq API je preuređen, sensor.set_framesize() sada baca iznimku pri neuspjehu, sensor.alloc_extra_fb() je izbacio Bayer/JPEG, a pozicijski argumenti u image.replace() su pomaknuti — vidi nekompatibilne promjene.

Nove značajke

  • FLIR Lepton — dodan je sensor.ioctl() za kontrolu specifičnu za senzor i puni skup Lepton ioctl-ova (radiometrija, osvježavanje/razlučivost, izvršavanje naredbe, postavljanje/dohvaćanje atributa, FPA/AUX temperatura u °C, način/raspon mjerenja, širina/visina), sensor.set_color_palette() / sensor.get_color_palette() s sensor.PALETTE_RAINBOW / PALETTE_IRONBOW, image.to_rainbow() te primjeri skripti za Lepton (27-Lepton).

  • Okidani način radaIOCTL_SET_TRIGGERED_MODE / IOCTL_GET_TRIGGERED_MODE za okidano snimanje s globalnim zatvaračem na MT9V034, s primjerima za visoki FPS i okidani način rada.

  • tv modul — dodane su veze za SPI TV / kompozitni video izlaz.

  • Obrada slike — dodani su image.gamma_corr(), image.draw_ellipse(), image.draw_edges(), alfa stapanje u draw_image(), ključna riječ mask= na clear(), ponovno dodani mask_rectangle() / mask_circle() / mask_ellipse(), ključne riječi za rotaciju / hmirror / vflip na draw_string() / draw_text(), ključna riječ transpose (te aliasi assign / set) na replace(), copy() x_scale / y_scale uz crop() / scale(), konstruktor Image() iz dimenzija, pixformat sensor.BINARY, izvezene funkcije za pretvorbu prostora boja te mnoga nova svojstva mrlja (corners, perimeter, roundness, elongation, extent, compactness, solidity, convexity, enclosing_circle, enclosed_ellipse, rotacija).

  • Biblioteke — dodani su upravljač ToF senzora udaljenosti vl53l1x, upravljač motora tb6612 (s primjerima za istosmjerni motor i koračni Motor-Shield) te micro-linalg biblioteka (ulinalg / umatrix).

  • FatFS je nadograđen na FF13C (s podrškom za exFAT).

Ostale promjene i poboljšanja

  • Poboljšana je zadana kvaliteta JPEG-a (sredina raspona od niske do visoke umjesto fiksirane vrijednosti); operacije nad slikom na mjestu više ne zahtijevaju ponavljanje slike kao prvog argumenta; draw_string() prihvaća necjelobrojne vrijednosti mjerila.

Ispravci grešaka

Kamera i senzori:

  • Ispravljeno je zaglavljivanje pri pokretanju Lepton 3.5 (istek vremena + oporavak) i pouzdanost resetiranja, set_framesize() prije set_pixformat() na MT9V034 (redoslijed poziva više nije bitan), MT9V034 WVGA na STM32H7, raspon automatske ekspozicije MT9V034 i ažuriranja sjenovitih registara te greška H7 ADC-a.

Obrada slike:

  • Ispravljeni su neispravan pristup memoriji u find_apriltags(), copy() pri kopiranju skalirane slike u glavni framebuffer, alokacija framebuffera u to_grayscale() / to_rgb565(), len() objekta ključne točke, rukovanje granicama JPEG MCU, parsiranje liste pragova u binary() te draw_keypoints() koji prihvaća torke ključnih točaka.

Sustav:

  • Ispravljena su curenja zbog neravnoteže mark/free u fb_alloc kroz metode image / fir / lcd / tv / nn, py_assert je sada oslobađao memoriju framebuffera pri uhvaćenim iznimkama (#417), očišćena je zastavica prekoračenja UART-a (ORE) tako da prekoračenja više ne blokiraju čitanja s UART-a, ispravljen je rukovatelj RTC IRQ te Windows alat cascade_convert.py.

Hardver i podrška za pločice

  • FLIR Lepton termalna kamera.

  • TV shield — SPI TV / kompozitni video izlaz.

  • Globalni zatvarač (MT9V034) okidani način rada.

Nekompatibilne promjene API-ja

Korisniku vidljive nekompatibilnosti API-ja između v3.2.0 i v3.3.0. Opseg: Python C-moduli u modules/ i Python biblioteke u scripts/libraries/.

Svaka je promjena označena svojim utjecajem:

  • major — utječe na većinu skripti koje su koristile značajku; morat ćete prilagoditi kod.

  • minor — uzak 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 prilagoditi svoj kod, prijeđite na kontrolni popis za migraciju na kraju. Svaki hash commita vodi na svoj diff na GitHubu.

cpufreq API preuređen (major)

Modul cpufreq preuređen je radi podrške za H7. Uklonjene su konstante cpufreq.CPUFREQ_120MHZ / 144 / 168 / 192 / 216MHZ i cpufreq.get_frequency(). cpufreq.set_frequency() sada uzima običan cijeli broj MHz (npr. cpufreq.set_frequency(120)), a dodani su cpufreq.get_current_frequencies() / cpufreq.get_supported_frequencies().

Commiti: 6babf84a1

Pozicijski argumenti image.replace() su pomaknuti (minor)

image.replace() je dobio argument transpose, pomičući pozicijski argument mask s pozicije 4 na poziciju 5. Kod koji je prosljeđivao mask pozicijski (npr. img.replace(src, hmirror, vflip, mask)) mora prijeći na oblik s ključnom riječi img.replace(src, mask=mask).

Commiti: dbe7bf059

sensor.alloc_extra_fb() više ne prihvaća Bayer/JPEG (minor)

sensor.alloc_extra_fb() više ne prihvaća sensor.BAYER ni sensor.JPEG (sada također podržava sensor.BINARY). Kod koji je alocirao dodatne framebuffere u Bayer ili JPEG formatu mora koristiti GRAYSCALE / RGB565 (ili alocirati međuspremnik na drugi način).

Commiti: f9e6b3fe0

sensor.set_framesize() baca iznimku pri neuspjehu (behavior)

sensor.set_framesize() sada baca ValueError kada veličina sličice nije podržana umjesto da vraća False. Kod koji je provjeravao povratnu vrijednost False mora umjesto toga uhvatiti iznimku ValueError.

Commiti: b0442633e

Kontrolni popis za migraciju

Za čistu prilagodbu na v3.3.0 tipičan posao je:

  1. Prilagodite cpufreq kod na cjelobrojni MHz set_frequency() te get_current_frequencies() / get_supported_frequencies() (preuređenje cpufreq).

  2. Proslijedite mask u image.replace() kao ključnu riječ (promjena replace).

  3. Alocirajte dodatne framebuffere kao GRAYSCALE / RGB565 umjesto Bayer/JPEG (promjena alloc_extra_fb).

  4. Uhvatite ValueError oko sensor.set_framesize() umjesto provjere False (promjena set_framesize).

Sve ostale skripte rade nepromijenjeno.