v2.7.0

v2.7.0 modernizira sensor API za automatsko pojačanje / automatsku ekspoziciju / ravnotežu bijele u fizičke jedinice (dB / mikrosekunde), preuređuje faznu korelaciju find_displacement() (dodajući rotaciju/razmjer) te dodaje get_similarity() (SSIM), chrominvar() / illuminvar(), dodatne međuspremnike sličica i MQTT biblioteku. Ovo je veliko izdanje koje narušava kompatibilnost — pročitajte promjene koje narušavaju kompatibilnost u nastavku.

Istaknuto

  • Moderni senzorski APIset_auto_gain() / set_auto_exposure() / set_auto_whitebal() sada koriste dB / mikrosekunde, s odgovarajućim get_gain_db() / get_exposure_us() / get_rgb_gain_db().

  • Fazna korelacija — preuređeni find_displacement() s rotacijom / razmjerom te find_rotscale() / linpolar() / logpolar().

  • SSIMimage.get_similarity() strukturna sličnost.

  • Dodatni međuspremnici sličicasensor.alloc_extra_fb() / dealloc_extra_fb().

  • MQTT — nova MQTT biblioteka.

  • Narušava kompatibilnost: senzorski API za pojačanje/ekspoziciju/ravnotežu bijele, find_displacement() / FFT veličine sličica, find_number(), alati za WINC firmware te AprilTag z_rotation() — svi su se promijenili — pogledajte promjene koje narušavaju kompatibilnost.

Nove značajke

  • Senzor — dodani su sensor.get_gain_db(), sensor.get_exposure_us(), sensor.get_rgb_gain_db(), ključna riječ gain_db_ceiling na set_auto_gain(), MT9V034 hmirror / vflip podrška te sensor.alloc_extra_fb() / sensor.dealloc_extra_fb() za dodatne međuspremnike sličica u RAM-u.

  • Slika — dodani su remove_shadows(), min() / max() (razlika sličica), get_similarity() (SSIM) s primjerom strukturne sličnosti, chrominvar() / illuminvar(), find_rotscale(), linpolar() / logpolar(), ključne riječi threshold / offset / invert na adaptivnim filtrima mean() / mode() / median() / midpoint(), len() / indeksiranje na objektu ključnih točaka te .match() pristupnik na objektu podudaranja ključnih točaka.

  • Biblioteke / mreža — dodana je MQTT biblioteka (s WiFi MQTT primjerom) te network.WINC.MODE_BSP način za programiranje WINC firmwarea preko debug UART-a.

  • Primjeri — dodani su niskoenergetski deep_sleep.py / stop_mode.py, napredni optički tok te primjeri linearno/logaritamsko-polarnih skripti; ugrađeni program sada pri pokretanju parsira uart.ini za omogućavanje REPL UART-a.

Ostale promjene i poboljšanja

  • get_regression() dobio je ključne riječi area_threshold / pixels_threshold i bržu robusnu regresiju (za praćenje linije / utrkivanje); get_pixel() sada podržava Bayer slike; dodani su STM32H7 temelji (CMSIS zaglavlja / HAL / pokretač (bootloader) — H7 ploča još nije upotrebljiva); ažuriran je priloženi WINC1500 firmware (19.4.4 / 19.5.2).

Ispravci grešaka

Obrada slika:

  • Ispravljena je greška izvan granica u dijamantnom pretraživanju find_template(), oštećenje kod logpolar / linpolar te divljanje illuminvar() kod vrijednosti boje blizu nule.

Senzor i sustav:

  • Ispravljene su greške automatske kontrole pojačanja, vraćena je veličina MAIN_FB kod snapshot() (tako da copy_to_fb na drugačijoj razlučivosti, promjena veličine FB-a i grupiranje optičkog toka ponovno rade), istek vremena gethostbyname na WINC-u, pydfu brisanje statusa na H7 pokretaču (bootloader) te niskoenergetski načini zaustavljanja/pripravnosti.

Podrška za hardver i ploče

  • STM32H7 — temelji (CMSIS / HAL / pokretač (bootloader)); OpenMV H7 ploča još nije upotrebljiva u ovom izdanju.

  • WINC1500 — ažuriran priloženi firmware.

Promjene API-ja koje narušavaju kompatibilnost

Korisniku vidljiva narušavanja API-ja između v2.6.0 i v2.7.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 prenijeti kod.

  • minor — uski 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 prenijeti svoj kod, prijeđite na kontrolni popis migracije na kraju. Svaki hash commita vodi na njegov diff na GitHubu.

sensor.set_auto_gain() preuređen u dB (major)

sensor.set_auto_gain() više ne prihvaća cjelobrojnu ključnu riječ value= i više ne vraća True / False. Koristite sensor.set_auto_gain(False, gain_db=...) (float dB vrijednost), pročitajte je natrag s novim sensor.get_gain_db() te omotajte poziv u try / except jer neuspjeh sada izaziva ValueError.

Commiti: b906c5f19

sensor.set_auto_exposure() preuređen u mikrosekunde (major)

sensor.set_auto_exposure() više ne prihvaća cjelobrojnu ključnu riječ value= i više ne vraća True / False. Koristite sensor.set_auto_exposure(False, exposure_us=...), pročitajte je natrag s novim sensor.get_exposure_us() te obradite ValueError koji se izaziva pri neuspjehu.

Commiti: 7be0a7a18

find_displacement() / FFT veličine sličica preuređene (major)

Fazna korelacija je preuređena. image.find_displacement() sada vraća objekt pomaka (s x_translation() / y_translation() — ranije x_offset / y_offset — uz rotation() / scale() i nove ključne riječi logpolar / fix_rotation_scale); zasebni rot-scale objekt je uklonjen, a dodan je find_rotscale(). Konstante FFT veličina sličica su preimenovane/uklonjene: sensor.B40x30 je u potpunosti uklonjena, a sensor.B64x32 / B64x64 su preimenovane u velika slova sensor.B64X32 / B64X64 (s novima B128X64 / B128X128).

Commiti: c78f91b42, 213396d09

sensor.set_auto_whitebal() preuređen u dB (minor)

sensor.set_auto_whitebal() zamijenio je svoju cjelobrojnu ključnu riječ value=[r, g, b] s rgb_gain_db=[r, g, b] (float dB) i sada vraća None (izazivajući ValueError pri neuspjehu) umjesto True / False. Koristite novi sensor.get_rgb_gain_db() za čitanje pojačanja natrag.

Commiti: 30ecbdc4f

set_hmirror() / set_vflip() vraćaju None (minor)

sensor.set_hmirror() i sensor.set_vflip() sada vraćaju None i izazivaju ValueError pri neuspjehu umjesto vraćanja statusa True / False. Uklonite svaki kod koji se grana na temelju njihove povratne vrijednosti.

Commiti: aeb023804

Alati za WINC firmware zahtijevaju putanju datoteke (minor)

Alati za network.WINC firmware su se promijenili: wlan.fw_dump() / wlan.fw_update() sada uzimaju obavezan argument putanje do firmware datoteke, a WINC se otvara u načinu programiranja (network.WINC(mode=...)). Ažurirajte pozive bez argumenata tako da proslijede putanju (npr. wlan.fw_update("/winc_19_5_2.bin")).

Commiti: fcc3b0b9c

image.find_number() zahtijeva 28x28 ROI (behavior)

image.find_number() (LeNet) sada zahtijeva točno 28x28 ROI koji stane unutar slike i inače izaziva grešku (umjesto pokretanja na proizvoljnom ROI-ju / ROI-ju cijele slike). Proslijedite eksplicitan roi=(x, y, 28, 28).

Commiti: 4d09a13f3

AprilTag z_rotation() predznak obrnut (behavior)

AprilTag z_rotation() (i povezani rotation()) sada koristi desnoorijentirani koordinatni sustav, pa je vraćeni kut negiran u odnosu na prethodna izdanja. Skripte koje ovise o starom predznaku moraju invertirati vrijednost ili prilagoditi svoju matematiku kutova.

Commiti: 7673aaf74

Kontrolni popis migracije

Za čist prijenos na v2.7.0 tipičan posao je:

  1. Prenesite set_auto_gain() na gain_db= + get_gain_db() i obradite ValueError (prerada automatskog pojačanja).

  2. Prenesite set_auto_exposure() na exposure_us= + get_exposure_us() (prerada automatske ekspozicije).

  3. Ažurirajte find_displacement() na objekt pomaka i preimenujte konstante FFT veličina sličica (prerada find_displacement).

  4. Prenesite set_auto_whitebal() na rgb_gain_db= + get_rgb_gain_db() (prerada ravnoteže bijele) i prestanite provjeravati povratnu vrijednost set_hmirror() / set_vflip() (promjena zrcaljenja/preokretanja).

  5. Proslijedite putanju firmwarea WINC fw_* alatima (promjena WINC alata).

  6. Proslijedite 28x28 roi u find_number() (promjena find_number) i prilagodite AprilTag matematiku kutova za obrnuti predznak z_rotation() (promjena z_rotation).

Sve ostale skripte rade nepromijenjeno.