v2.1.0¶
v2.1.0 on massiivinen API-modernisointijulkaisu. Se korvaa FREAK-avainpistekuvaajan ORB:llä, muokkaa find_blobs() / histogrammit / tilastot objektipohjaisiksi API:iksi, nimeää uudelleen sensor-moduulin automaattisen valotus-/vahvistus-/valkotasapainofunktiot, lisää QR-koodien tunnistuksen ja OV7725:n linssikorjauksen sekä ottaa käyttöön ensimmäisen OpenMV Cam M7 -kortin. Monet API:t muuttuivat — lue alla olevat rikkovat muutokset.
Kohokohdat¶
ORB-avainpisteet — FREAK-kuvaaja korvattiin ORB:llä (
find_keypoints()/match_descriptor()muokattu).Objekti-API:t —
find_blobs(),get_histogram(),get_statistics()palauttavat nyt objekteja nimettyine selektoreineen.QR-koodit — lisätty
image.find_qrcodes()-tunnistus.OpenMV Cam M7 — ensimmäinen korttituki.
Sensori —
set_auto_whitebal()/set_auto_gain()/set_auto_exposure()(uudelleennimetty) jaset_lens_correction().Rikkova: avainpiste-/kuvaaja-, blob-/histogrammi-/tilasto-, sensorin automaattifunktio- ja useat muut API:t muuttuivat — katso rikkovat muutokset.
Uudet ominaisuudet¶
OpenMV Cam M7 — lisätty ensimmäinen OpenMV 3 (M7) -korttituki.
QR-koodit — lisätty
image.find_qrcodes()qrcodes.py-esimerkin kanssa.ORB-avainpisteet — uusi ORB-kuvaajajärjestelmä:
find_keypoints()corner_detector-argumentilla (CORNER_FAST/CORNER_AGAST),max_keypoints/scale_factor;match_descriptor()filter_outliers-avainsanalla ja kiertoarviolla; avainpisteiden tallennus/lataus.Objekti-API:t —
image.get_histogram()/get_statistics()/get_percentile()palauttavat histogrammi-/tilasto-objekteja;find_blobs()palauttaa blob-objekteja (rect()/cx()/cy()/code()/area()/pixels()) parametreillaarea_threshold/pixels_threshold/merge/margin/invertsekäx_stride/y_stride.Sensori — lisätty
sensor.set_lens_correction(enable, radi, coef)OV7725:n linssin varjostukselle,sensor.set_windowing()hyväksyy nyt myös(w, h)-monikon (automaattisesti keskitetty) jaimage.Image(..., copy_to_fb=True)/load_image(copy_to_fb=True).Lisätty värinseuranta-, Arduino SPI/I2C-orja-, avainpiste- ja histogrammi-/tilastoesimerkkiskriptit.
Muut muutokset ja parannukset¶
IDE voi nyt keskeyttää käynnissä olevan
main.py:n; nopeampifind_blobs()/find_qrcodes()/get_statistics(); ORB käyttää popcount-Hamming-etäisyyttä; linssikorjaus käyttää vähemmän RAMia; Linux-udev-sääntö estää ModemManageria kaappaamasta sarjaporttia.
Virhekorjaukset¶
Kamera ja kuvantaminen:
Korjattu M7:n DMA-välimuistin tyhjennys/mitätöinti (vioittuneet kehykset), virheellinen ylimääräinen rivi jokaisen kehyksen lopussa, JPEG-kehyspuskurin ylivuotorajat, kehyspuskurin vapautus
compress()-virheen yhteydessä, ORB:n tarkkuus / ROI / tyhjän joukon käsittely jaload_image(copy_to_fb=True)-geometria.
Järjestelmä:
Korjattu F7:n ADC-tuki, OV7725-rekisterin nimi, käynnistyslataimen/USB:n ajoitus, käytetty WFI:tä tilannekuvia odotettaessa ja tehty MJPEG-streamer-esimerkistä ei-estävä asiakaskohtaisilla aikakatkaisuilla.
Laitteisto- ja korttituki¶
OpenMV Cam M7 (OpenMV 3) — ensimmäinen korttituki.
OV7725 — linssikorjaus- (varjostus) tuki.
Rikkovat API-muutokset¶
Käyttäjälle näkyvät API-rikkoumat versioiden v2.0.0 ja v2.1.0 välillä. Laajuus: Python-C-moduulit hakemistossa modules/ ja Python-kirjastot hakemistossa scripts/libraries/.
Jokainen muutos on merkitty vaikutuksensa mukaan:
major — vaikuttaa useimpiin ominaisuutta käyttäneisiin skripteihin; sinun on siirrettävä koodia.
minor — kapea API; vaikuttaa vain sitä käyttäneisiin skripteihin.
behavior — sama API, eri tulokset; tarkista viritetyt skriptit uudelleen.
Muutokset on ryhmitelty vaikutuksen mukaan tässä järjestyksessä. Jos haluat vain siirtää koodisi, siirry lopussa olevaan siirtymistarkistuslistaan. Jokainen committihajautusarvo linkittää diffiinsä GitHubissa.
FREAK korvattu ORB:llä; kuvaaja-API muokattu (major)¶
FREAK-avainpistekuvaaja poistettiin ja korvattiin ORB:llä: image.FREAK ei enää ole olemassa (käytä image.ORB). image.match_descriptor() / save_descriptor() / load_descriptor() eivät enää ota etummaista kuvaajatyyppi-argumenttia (se päätellään objektista), match_descriptor() palauttaa nyt 8-alkioisen monikon (cx, cy, x, y, w, h, match_count, rotation) (viimeinen alkio on raaka lukumäärä, ei prosenttiosuus), ja draw_keypoints() vaatii avainpiste-objektin raa’an (x, y, angle)-listan sijaan. find_keypoints() sai parametrit corner_detector / max_keypoints / scale_factor muuttuneilla oletuksilla.
Sensorin automaattifunktioiden uudelleennimeäminen (major)¶
sensor.set_whitebal() / set_gain_ctrl() / set_exposure_ctrl() nimettiin uudelleen muotoon sensor.set_auto_whitebal() / set_auto_gain() / set_auto_exposure() (vanhat nimet poistettiin). Jokainen sai valinnaisen value=-avainsanan manuaalisen arvon asettamiseksi automaattisen sijaan.
Commitit: 1b22a2961
Histogrammi / tilastot muokattu objekti-API:iksi (major)¶
Histogrammi-/tilastopinta muokattiin objektipohjaisiksi funktioiksi image.get_histogram() / get_statistics() / get_percentile(), jotka palauttavat histogrammi-/tilasto-objekteja. Vanhat litteät histogrammi-/tilastotulokset ja metodit bin_count / l_bin_count / a_bin_count / b_bin_count poistettiin (käytä len(histogram.bins()) jne.).
find_features():n scale nimetty uudelleen (major)¶
image.find_features() (Haar) nimesi scale=-avainsanansa uudelleen muotoon scale_factor=. Päivitä find_features(cascade, scale=...)-kutsut muotoon scale_factor=....
Commitit: 96e4f770c
find_blobs() palauttaa objekteja; find_markers() poistettu (minor)¶
image.find_blobs() palauttaa nyt blob-objekteja nimettyine selektoreineen (indeksipohjainen pääsy toimii edelleen taaksepäin yhteensopivuuden vuoksi), ja image.find_markers() poistettiin — käytä sen sijaan find_blobs(..., merge=True, margin=...). Edistynyttä väriblob-suotimen takaisinkutsua ei enää tueta.
Commitit: af15ec6eb
img.copy_to_fb() korvattu (minor)¶
img.copy_to_fb()-metodi korvattiin copy_to_fb=-avainsanalla luokassa image.Image / load_image(). Käytä image.Image(path, copy_to_fb=True) ladataksesi suuret kuvat suoraan kehyspuskuriin.
Commitit: 1645ab94b
compress() hylkää alueen ulkopuolisen laadun (behavior)¶
image.compress() / compressed() aiheuttavat nyt virheen, kun quality on alueen 1–100 ulkopuolella, hiljaisen rajoittamisen sijaan. Rajoita quality välille 1–100 ennen kutsumista. Erikseen OpenMV 3:n JPEG-puskuri pienennettiin 64 KB:stä 23000 tavuun, joten suuret kehykset voivat nyt aiheuttaa muistin loppumisen — laske JPEG-laatua tai kehyskokoa.
lens_corr():n zoomaus toimii nyt (behavior)¶
image.lens_corr() soveltaa nyt todella zoom-argumenttiaan (aiemmin se jäsennettiin mutta ei vaikuttanut), joten tuloste eroaa skripteissä, jotka välittivät ei-oletusarvoisen zoomin. Tarkista lens_corr()-viritys uudelleen.
Commitit: d6b49adef
Siirtymistarkistuslista¶
Siisti siirtyminen versioon v2.1.0 vaatii tyypillisesti seuraavat työt:
Korvaa
image.FREAKarvollaimage.ORB, poista kuvaajatyyppi-argumentti ja päivitämatch_descriptor()-monikon purku /draw_keypoints()avainpiste-objektiin (ORB-muokkaus).Nimeä uudelleen
sensor.set_whitebal()/set_gain_ctrl()/set_exposure_ctrl()muotoonset_auto_*(automaattifunktioiden uudelleennimeäminen).Siirrä histogrammi-/tilastokoodi objektimetodeihin (histogrammi-/tilastomuokkaus).
Nimeä uudelleen
find_features():nscale=muotoonscale_factor=(find_features-uudelleennimeäminen).Käytä blob-objektin selektoreita ja korvaa
find_markers()muodollafind_blobs(merge=True, ...)(find_blobs-muutos); korvaaimg.copy_to_fb()copy_to_fb=-avainsanalla (copy_to_fb-muutos).Rajoita
compress():n laatu välille 1–100 ja tarkista JPEG-koot uudelleen OpenMV 3:ssa (compress-muutos); viritälens_corr():n zoomaus uudelleen (lens_corr-muutos).
Kaikki muut skriptit toimivat muuttumattomina.