v2.4.0

v2.4.0 prepisuje find_lines() kao detektor temeljen na Houghovoj transformaciji, dodaje find_line_segments(), dekodiranje data matrica find_datamatrices(), sensor.set_vsync_output(), čitanje/pisanje isječaka slike i mnoge nove skalirane veličine sličica za veći FPS. find_lines(), match_descriptor() i skip_frames() su se promijenili — pročitajte promjene koje narušavaju kompatibilnost u nastavku.

Istaknuto

  • find_lines() — prepisan kao detektor linija temeljen na Houghovoj transformaciji koji vraća objekte linija (sada radi na RGB565, a ne samo na sivim tonovima).

  • find_line_segments() — detekcija konačnih segmenata linija.

  • find_datamatrices() — dekodiranje data matrica.

  • sensor.set_vsync_output() — pokretanje VSYNC-a na ulazno/izlaznom pinu za sinkronizaciju kamere.

  • Više veličina sličica — mnogo dodatnih skaliranih razlučivosti za veći FPS.

  • Narušava kompatibilnost: find_lines(), match_descriptor() i skip_frames() su se promijenili — pogledajte promjene koje narušavaju kompatibilnost.

Nove značajke

  • image.find_line_segments() — pronalazak konačnih segmenata linija; objekti linija dobili su pristupnik .length().

  • image.find_datamatrices() — dekodiranje data matrica, s primjerima skripti.

  • sensor.set_vsync_output(pin) — izlaz VSYNC signala na GPIO pinu za sinkronizaciju kamere (OpenMV 2 / OpenMV 3).

  • Isječci slike — indeksiranje slike / protokol međuspremnika sada podržava čitanje i pisanje isječaka podataka slike.

  • Dodane mnoge dodatne kombinacije skalirane razlučivosti / veličine sličice za podršku većim brzinama sličica; clock.fps() sada resetira svoje akumulatore svake 2 s tako da prijavljeni FPS prati nedavnu brzinu.

Ostale promjene i poboljšanja

  • OV7725 se prozorira na QVGA kada je razlučivost ≤ VGA (manje ispuštenih sličica pri visokim brzinama snimanja), a njegov PLL je postavljen na 6× sa smanjenim vanjskim taktom (OpenMV 2 48 MHz, OpenMV 3 54 MHz), čime se mijenja vremenski raspored sličica senzora.

Ispravci pogrešaka

Obrada slike:

  • Ispravljena je pogreška u veličini međuspremnika u compress_for_ide() (početni/završni marker), dekodiranje QR-a (uz uzvodne ispravke indeksiranja bitmape ćelija quirc-a i granica obrasca poravnanja).

Senzor i povezivost:

  • Smanjen je takt senzora OpenMV 2 radi rada s višim PLL-om senzora (inicijalizacija/sinkronizacija kamere) i učinjeno da WINC socket.recvfrom() vraća stvarnu primljenu veličinu (s pogreškom pri nepozitivnoj veličini umjesto vraćanja zastarjele vrijednosti).

Hardver i podrška za ploče

  • VSYNC izlaz na GPIO pinu (OpenMV 2 / OpenMV 3) koji podržava sensor.set_vsync_output().

  • OpenMV 3 — omogućen pyb.UART UART1.

Promjene API-ja koje narušavaju kompatibilnost

Korisniku vidljive promjene API-ja koje narušavaju kompatibilnost između v2.3.0 i v2.4.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 fino podešene skripte.

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

find_lines() prepisan kao Hough detektor (major)

image.find_lines() je prepisan kao detektor temeljen na Houghovoj transformaciji. Više ne vraća popis n-torki (x1, y1, x2, y2) — vraća objekte linija (.line() / .x1() / .y1() / .x2() / .y2() / .theta() / .rho() / .magnitude()) — i sada radi i na RGB565 (a ne samo na sivim tonovima). Argument threshold promijenio se iz float vrijednosti 0.0–1.0 u cjelobrojni zbroj magnitude rubova, line.magnitude je sada cijeli broj, a dodane su nove ključne riječi theta_margin / rho_margin. Prilagodite kod koji raspakira n-torke na objekte linija i ponovno podesite threshold.

Predaje: 31b7b5bf3, f4a9c6154

match_descriptor() vraća objekt podudaranja (minor)

image.match_descriptor() (ORB) sada vraća objekt kptmatch s pristupnicima .cx() / .cy() / .x() / .y() / .w() / .h() / .count() / .theta() / .rect() umjesto obične 8-torke. Objekt je i dalje indeksabilan/podijeljiv u isječke pa pozicijsko indeksiranje i dalje radi, ali kod koji je radio isinstance(result, tuple) (ili koristio metode n-torke) mora koristiti nove pristupnike.

Predaje: e960546b6

sensor.skip_frames() je sada vremenski temeljen (behavior)

sensor.skip_frames() je preuređen tako da prihvaća ključnu riječ time= (zadano ~300 ms) i sada je prema zadanom vremenski temeljen umjesto izvođenja fiksnog broja sličica, zaustavljajući se ranije kada protekne vrijeme. Skripte koje su se oslanjale na točan broj sličica trebale bi proslijediti eksplicitan broj i/ili u skladu s tim postaviti time=.

Predaje: a039b5d1c

Kontrolni popis za migraciju

Za čistu prilagodbu na v2.4.0 tipičan posao je:

  1. Prilagodite raspakiravanje n-torki u find_lines() na objekte linija i ponovno podesite cjelobrojni threshold (prepisivanje find_lines).

  2. Koristite pristupnike kptmatch umjesto tretiranja rezultata match_descriptor() kao n-torke (promjena match_descriptor).

  3. Proslijedite eksplicitan broj i/ili time= u sensor.skip_frames() ako ste se oslanjali na fiksni broj sličica (promjena skip_frames).

Sve ostale skripte rade nepromijenjene.