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:tfind_blobs(), get_histogram(), get_statistics() palauttavat nyt objekteja nimettyine selektoreineen.

  • QR-koodit — lisätty image.find_qrcodes()-tunnistus.

  • OpenMV Cam M7 — ensimmäinen korttituki.

  • Sensoriset_auto_whitebal() / set_auto_gain() / set_auto_exposure() (uudelleennimetty) ja set_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:timage.get_histogram() / get_statistics() / get_percentile() palauttavat histogrammi-/tilasto-objekteja; find_blobs() palauttaa blob-objekteja (rect() / cx() / cy() / code() / area() / pixels()) parametreilla area_threshold / pixels_threshold / merge / margin / invert sekä 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) ja image.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; nopeampi find_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 ja load_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.

Commitit: e2d0c4840, bba8e5a9e, 6000684cb

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.).

Commitit: 011108412, 9f37c83de

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.

Commitit: 9efd7474a, 9a7c3defc

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:

  1. Korvaa image.FREAK arvolla image.ORB, poista kuvaajatyyppi-argumentti ja päivitä match_descriptor()-monikon purku / draw_keypoints() avainpiste-objektiin (ORB-muokkaus).

  2. Nimeä uudelleen sensor.set_whitebal() / set_gain_ctrl() / set_exposure_ctrl() muotoon set_auto_* (automaattifunktioiden uudelleennimeäminen).

  3. Siirrä histogrammi-/tilastokoodi objektimetodeihin (histogrammi-/tilastomuokkaus).

  4. Nimeä uudelleen find_features():n scale= muotoon scale_factor= (find_features-uudelleennimeäminen).

  5. Käytä blob-objektin selektoreita ja korvaa find_markers() muodolla find_blobs(merge=True, ...) (find_blobs-muutos); korvaa img.copy_to_fb() copy_to_fb=-avainsanalla (copy_to_fb-muutos).

  6. 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.