v2.7.0

v2.7.0 modernisoi sensor-moduulin automaattisen vahvistuksen / automaattisen valotuksen / valkotasapainon API:n fysikaalisiin yksiköihin (dB / mikrosekunnit), uudistaa vaihekorrelaatioon perustuvan find_displacement()-funktion (lisäten kierron/skaalauksen) ja lisää get_similarity()-funktion (SSIM), chrominvar() / illuminvar() -funktiot, lisää kehyspuskureita sekä MQTT-kirjaston. Tämä on suuri rikkova julkaisu — lue alla olevat rikkovat muutokset.

Kohokohdat

  • Moderni sensori-APIset_auto_gain() / set_auto_exposure() / set_auto_whitebal() käyttävät nyt yksiköitä dB / mikrosekunnit, vastaavien get_gain_db() / get_exposure_us() / get_rgb_gain_db() kanssa.

  • Vaihekorrelaatio — uudistettu find_displacement() kierrolla / skaalauksella sekä find_rotscale() / linpolar() / logpolar().

  • SSIMimage.get_similarity() rakenteellinen samankaltaisuus.

  • Lisäkehyspuskuritsensor.alloc_extra_fb() / dealloc_extra_fb().

  • MQTT — uusi MQTT-kirjasto.

  • Rikkova: sensorin vahvistus-/valotus-/valkotasapaino-API, find_displacement() / FFT-framesize-koot, find_number(), WINC-laiteohjelmistotyökalut ja AprilTagin z_rotation() muuttuivat kaikki — katso rikkovat muutokset.

Uudet ominaisuudet

  • Sensori — lisätty sensor.get_gain_db(), sensor.get_exposure_us(), sensor.get_rgb_gain_db(), gain_db_ceiling-avainsana funktioon set_auto_gain(), MT9V034:n hmirror / vflip -tuki sekä sensor.alloc_extra_fb() / sensor.dealloc_extra_fb() ylimääräisille RAM-muistissa oleville kehyspuskureille.

  • Image — lisätty remove_shadows(), min() / max() (kehysten erotus), get_similarity() (SSIM) rakenteellisen samankaltaisuuden esimerkin kera, chrominvar() / illuminvar(), find_rotscale(), linpolar() / logpolar(), threshold- / offset- / invert-avainsanat mean() / mode() / median() / midpoint() -adaptiivisiin suodattimiin, len() / indeksointi keypoints-olioon sekä .match()-aksessori keypoint-match-olioon.

  • Kirjastot / verkko — lisätty MQTT-kirjasto (WiFi MQTT -esimerkin kera) sekä network.WINC.MODE_BSP -tila WINC-laiteohjelmiston ohjelmointiin debug-UARTin kautta.

  • Esimerkit — lisätty matalan tehon deep_sleep.py / stop_mode.py, edistynyt optinen virtaus sekä lineaarisia/logaritmisia napakoordinaattiesimerkkiskriptejä; laiteohjelmisto jäsentää nyt uart.ini-tiedoston käynnistyksen yhteydessä ottaakseen käyttöön REPL-UARTin.

Muut muutokset ja parannukset

  • get_regression() sai area_threshold / pixels_threshold -avainsanat sekä nopeamman robustin regression (viivanseurantaan / kilpa-ajoon); get_pixel() tukee nyt Bayer-kuvia; lisätty STM32H7-pohjatyöt (CMSIS-otsikkotiedostot / HAL / käynnistyslatain — H7-kortti ei ole vielä käytettävissä); päivitetty pakettiin sisältyvä WINC1500-laiteohjelmisto (19.4.4 / 19.5.2).

Korjatut virheet

Kuvankäsittely:

  • Korjattu find_template()-funktion timanttihaun rajojen ylitysvirhe, logpolar / linpolar -korruptio sekä illuminvar(), joka villiintyi lähes nollissa väriarvoissa.

Sensori ja järjestelmä:

  • Korjattu automaattisen vahvistuksen säädön virheet, palautettu MAIN_FB-koko snapshot()-kutsussa (jotta copy_to_fb eri resoluutiolla, FB:n koon muutos ja optisen virtauksen pooling toimivat taas), WINCin gethostbyname-aikakatkaisu, pydfu-tilan tyhjennys H7-käynnistyslataimessa sekä matalan tehon stop-/standby-tilat.

Laitteisto- ja korttituki

  • STM32H7 — pohjatyöt (CMSIS / HAL / käynnistyslatain); OpenMV H7 -kortti ei ole vielä käytettävissä tässä julkaisussa.

  • WINC1500 — päivitetty pakettiin sisältyvä laiteohjelmisto.

Rikkovat API-muutokset

Käyttäjälle näkyvät API-muutokset versioiden v2.6.0 ja v2.7.0 välillä. Laajuus: Python C-moduulit hakemistossa modules/ ja Python-kirjastot hakemistossa scripts/libraries/.

Jokainen muutos on merkitty sen vaikutuksen mukaan:

  • major — vaikuttaa useimpiin ominaisuutta käyttäneisiin skripteihin; sinun on portattava koodi.

  • minor — kapea API; vaikuttaa vain sitä käyttäneisiin skripteihin.

  • behavior — sama API, eri tulokset; tarkista hienosäädetyt skriptit uudelleen.

Muutokset on ryhmitelty vaikutuksen mukaan tässä järjestyksessä. Jos haluat vain portata koodisi, siirry siirtymälistaan lopussa. Jokainen commit-hash linkittää sen diffiin GitHubissa.

sensor.set_auto_gain() uudistettu desibeleihin (dB) (major)

sensor.set_auto_gain() ei enää hyväksy kokonaisluku-avainsanaa value= eikä palauta enää True / False. Käytä sensor.set_auto_gain(False, gain_db=...) (liukuluku-dB-arvo), lue se takaisin uudella funktiolla sensor.get_gain_db() ja kääri kutsu try / except -lohkoon, koska epäonnistuminen nostaa nyt ValueError-poikkeuksen.

Commits: b906c5f19

sensor.set_auto_exposure() uudistettu mikrosekunteihin (major)

sensor.set_auto_exposure() ei enää hyväksy kokonaisluku-avainsanaa value= eikä palauta enää True / False. Käytä sensor.set_auto_exposure(False, exposure_us=...), lue se takaisin uudella funktiolla sensor.get_exposure_us() ja käsittele epäonnistumisessa nostettu ValueError.

Commits: 7be0a7a18

find_displacement() / FFT-framesize-koot uudistettu (major)

Vaihekorrelaatio uudistettiin. image.find_displacement() palauttaa nyt siirtymäolion (jossa x_translation() / y_translation() — entiset x_offset / y_offset — sekä rotation() / scale() ja uudet logpolar / fix_rotation_scale -avainsanat); erillinen rot-scale-olio poistettiin ja find_rotscale() lisättiin. FFT-framesize-vakiot nimettiin uudelleen/poistettiin: sensor.B40x30 poistettiin kokonaan, ja sensor.B64x32 / B64x64 nimettiin isoin kirjaimin sensor.B64X32 / B64X64 (uusien B128X64 / B128X128 kanssa).

Commits: c78f91b42, 213396d09

sensor.set_auto_whitebal() uudistettu desibeleihin (dB) (minor)

sensor.set_auto_whitebal() korvasi kokonaisluku-avainsanansa value=[r, g, b] avainsanalla rgb_gain_db=[r, g, b] (liukuluku-dB) ja palauttaa nyt None (nostaen epäonnistumisessa ValueError) True / False -arvojen sijaan. Käytä uutta funktiota sensor.get_rgb_gain_db() lukeaksesi vahvistukset takaisin.

Commits: 30ecbdc4f

set_hmirror() / set_vflip() palauttavat None (minor)

sensor.set_hmirror() ja sensor.set_vflip() palauttavat nyt None ja nostavat epäonnistumisessa ValueError True / False -tilan palauttamisen sijaan. Poista kaikki koodi, joka haarautuu niiden paluuarvon perusteella.

Commits: aeb023804

WINC-laiteohjelmistotyökalut vaativat tiedostopolun (minor)

network.WINC -laiteohjelmistotyökalut muuttuivat: wlan.fw_dump() / wlan.fw_update() ottavat nyt pakollisen laiteohjelmistotiedoston polkuargumentin ja WINC avataan ohjelmointitilassa (network.WINC(mode=...)). Päivitä argumentittomat kutsut välittämään polku (esim. wlan.fw_update("/winc_19_5_2.bin")).

Commits: fcc3b0b9c

image.find_number() vaatii 28x28-ROI:n (behavior)

image.find_number() (LeNet) vaatii nyt täsmälleen 28x28-ROI:n, joka mahtuu kuvan sisään, ja nostaa muuten virheen (sen sijaan että suorittuisi mielivaltaisella/koko kuvan ROI:lla). Välitä eksplisiittinen roi=(x, y, 28, 28).

Commits: 4d09a13f3

AprilTagin z_rotation()-etumerkki käännetty (behavior)

AprilTagin z_rotation() (ja siihen liittyvä rotation()) käyttää nyt oikeakätistä koordinaattikonventiota, joten palautettu kulma on vastakkaismerkkinen aiempiin julkaisuihin verrattuna. Skriptien, jotka riippuvat vanhasta etumerkistä, on käännettävä arvo tai mukautettava kulmamatematiikkansa.

Commits: 7673aaf74

Siirtymälista

Puhdas portti versioon v2.7.0 vaatii tyypillisesti seuraavat työt:

  1. Portaa set_auto_gain() muotoon gain_db= + get_gain_db() ja käsittele ValueError (automaattisen vahvistuksen uudistus).

  2. Portaa set_auto_exposure() muotoon exposure_us= + get_exposure_us() (automaattisen valotuksen uudistus).

  3. Päivitä find_displacement() siirtymäolioon ja nimeä FFT-framesize-vakiot uudelleen (find_displacement-uudistus).

  4. Portaa set_auto_whitebal() muotoon rgb_gain_db= + get_rgb_gain_db() (valkotasapainon uudistus) ja lopeta set_hmirror() / set_vflip() -funktioiden paluuarvon tarkistaminen (peilauksen/kääntämisen muutos).

  5. Välitä laiteohjelmistopolku WINCin fw_*-työkaluille (WINC-työkalujen muutos).

  6. Välitä 28x28-roi funktiolle find_number() (find_number-muutos) ja mukauta AprilTagin kulmamatematiikkaa käännetylle z_rotation()-etumerkille (z_rotation-muutos).

Kaikki muut skriptit toimivat muuttumattomina.