v2.1.0¶
v2.1.0 je veliko izdanje modernizacije API-ja. Zamjenjuje FREAK deskriptor ključnih točaka s ORB, preuređuje find_blobs() / histograme / statistiku u API-je temeljene na objektima, preimenuje funkcije sensor za automatsku ekspoziciju/pojačanje/balans bijele, dodaje detekciju QR-kodova i korekciju leće za OV7725 te uvodi početnu podršku za ploču OpenMV Cam M7. Mnogi API-ji su se promijenili — pročitajte promjene koje narušavaju kompatibilnost u nastavku.
Istaknuto¶
ORB ključne točke — FREAK deskriptor zamijenjen je s ORB (
find_keypoints()/match_descriptor()preuređeni).Objektni API-ji —
find_blobs(),get_histogram(),get_statistics()sada vraćaju objekte s imenovanim pristupnicima.QR kodovi — dodana detekcija
image.find_qrcodes().OpenMV Cam M7 — početna podrška za ploču.
Senzor —
set_auto_whitebal()/set_auto_gain()/set_auto_exposure()(preimenovani) iset_lens_correction().Narušava kompatibilnost: API-ji za ključne točke/deskriptore, mrlje/histograme/statistiku, automatske funkcije senzora i nekoliko drugih su se promijenili — pogledajte promjene koje narušavaju kompatibilnost.
Nove značajke¶
OpenMV Cam M7 — dodana početna podrška za OpenMV 3 (M7) ploču.
QR kodovi — dodan
image.find_qrcodes()s primjeromqrcodes.py.ORB ključne točke — novi ORB sustav deskriptora:
find_keypoints()s argumentomcorner_detector(CORNER_FAST/CORNER_AGAST),max_keypoints/scale_factor;match_descriptor()s imenovanim argumentomfilter_outliersi procjenom rotacije; spremanje/učitavanje ključnih točaka.Objektni API-ji —
image.get_histogram()/get_statistics()/get_percentile()vraćaju objekte histograma/statistike;find_blobs()vraća objekte mrlja (rect()/cx()/cy()/code()/area()/pixels()) sarea_threshold/pixels_threshold/merge/margin/inverttex_stride/y_stride.Senzor — dodan
sensor.set_lens_correction(enable, radi, coef)za sjenčanje leće OV7725,sensor.set_windowing()sada prihvaća i(w, h)tuple (automatski centriran) teimage.Image(..., copy_to_fb=True)/load_image(copy_to_fb=True).Dodane primjer skripte za praćenje boja, Arduino SPI/I2C-slave, ključne točke te histogram/statistiku.
Ostale promjene i poboljšanja¶
IDE sada može prekinuti pokrenuti
main.py; bržifind_blobs()/find_qrcodes()/get_statistics(); ORB koristi popcount Hammingovu udaljenost; korekcija leće koristi manje RAM-a; Linuxudevpravilo sprječava ModemManager da preuzme serijski priključak.
Ispravci grešaka¶
Kamera i obrada slike:
Ispravljen M7 DMA cache clean/invalidate (oštećene sličice), suvišna dodatna linija na kraju svake sličice, granice prelijevanja JPEG međuspremnika slike, oslobađanje međuspremnika slike pri neuspjehu
compress(), točnost ORB-a / ROI / rukovanje praznim skupom te geometrijaload_image(copy_to_fb=True).
Sustav:
Ispravljena F7 ADC podrška, naziv OV7725 registra, tajming pokretača/USB-a, korišten WFI tijekom čekanja na snimke te primjer MJPEG strujanja učinjen neblokirajućim s vremenskim ograničenjima po klijentu.
Podrška za hardver i ploče¶
OpenMV Cam M7 (OpenMV 3) — početna podrška za ploču.
OV7725 — podrška za korekciju leće (sjenčanje).
Promjene API-ja koje narušavaju kompatibilnost¶
Korisniku vidljive promjene API-ja koje narušavaju kompatibilnost između v2.0.0 i v2.1.0. Opseg: Python C-moduli u modules/ i Python biblioteke u scripts/libraries/.
Svaka promjena označena je svojim utjecajem:
major — utječe na većinu skripti koje su koristile značajku; trebat ćete prenijeti kod.
minor — uski API; utječe samo na skripte koje su ga koristile.
behavior — isti API, drugačiji rezultati; ponovno provjerite podešene skripte.
Promjene su grupirane prema utjecaju tim redoslijedom. Ako samo želite prenijeti svoj kod, prijeđite na popis za migraciju na kraju. Svaki hash commita vodi na njegov diff na GitHubu.
FREAK zamijenjen s ORB; API deskriptora preuređen (major)¶
FREAK deskriptor ključnih točaka je uklonjen i zamijenjen s ORB: image.FREAK više ne postoji (koristite image.ORB). image.match_descriptor() / save_descriptor() / load_descriptor() više ne primaju vodeći argument tipa deskriptora (zaključuje se iz objekta), match_descriptor() sada vraća tuple s 8 elemenata (cx, cy, x, y, w, h, match_count, rotation) (zadnji element je sirovi broj, ne postotak), a draw_keypoints() zahtijeva objekt ključnih točaka umjesto sirove (x, y, angle) liste. find_keypoints() je dobio corner_detector / max_keypoints / scale_factor s promijenjenim zadanim vrijednostima.
Preimenovanje automatskih funkcija senzora (major)¶
sensor.set_whitebal() / set_gain_ctrl() / set_exposure_ctrl() preimenovani su u sensor.set_auto_whitebal() / set_auto_gain() / set_auto_exposure() (stari nazivi su uklonjeni). Svaki je dobio opcionalni imenovani argument value= za postavljanje ručne vrijednosti umjesto automatske.
Commiti: 1b22a2961
Histogram / statistika preuređeni u objektne API-je (major)¶
Sučelje histograma/statistike preuređeno je u objektne image.get_histogram() / get_statistics() / get_percentile() koji vraćaju objekte histograma/statistike. Stari ravni rezultati histograma/statistike te metode bin_count / l_bin_count / a_bin_count / b_bin_count su uklonjene (koristite len(histogram.bins()) itd.).
find_features() scale preimenovan (major)¶
image.find_features() (Haar) preimenovao je svoj imenovani argument scale= u scale_factor=. Ažurirajte find_features(cascade, scale=...) pozive u scale_factor=....
Commiti: 96e4f770c
find_blobs() vraća objekte; find_markers() uklonjen (minor)¶
image.find_blobs() sada vraća objekte mrlja s imenovanim pristupnicima (pristup po indeksu i dalje radi radi unatražne kompatibilnosti), a image.find_markers() je uklonjen — umjesto njega koristite find_blobs(..., merge=True, margin=...). Napredni povratni poziv za filtriranje mrlja po boji više nije podržan.
Commiti: af15ec6eb
img.copy_to_fb() zamijenjen (minor)¶
Metoda img.copy_to_fb() zamijenjena je imenovanim argumentom copy_to_fb= na image.Image / load_image(). Koristite image.Image(path, copy_to_fb=True) za učitavanje velikih slika izravno u međuspremnik slike.
Commiti: 1645ab94b
compress() odbacuje kvalitetu izvan raspona (behavior)¶
image.compress() / compressed() sada bacaju grešku kada je quality izvan raspona 1–100 umjesto tihog ograničavanja. Ograničite quality na 1–100 prije poziva. Odvojeno, JPEG međuspremnik na OpenMV 3 smanjen je sa 64 KB na 23000 bajtova, pa velike sličice sada mogu izazvati nedostatak memorije — snizite JPEG kvalitetu ili veličinu sličice.
lens_corr() zoom sada je funkcionalan (behavior)¶
image.lens_corr() sada zaista primjenjuje svoj argument zoom (prije se parsirao, ali nije imao učinka), pa se izlaz razlikuje za skripte koje su proslijedile nezadani zoom. Ponovno provjerite podešavanje lens_corr().
Commiti: d6b49adef
Popis za migraciju¶
Za čist prijenos na v2.1.0 uobičajen posao je sljedeći:
Zamijenite
image.FREAKsimage.ORB, izbacite argument tipa deskriptora te ažurirajte raspakiravanje tupleamatch_descriptor()/draw_keypoints()na objekt ključnih točaka (ORB preuređivanje).Preimenujte
sensor.set_whitebal()/set_gain_ctrl()/set_exposure_ctrl()uset_auto_*oblike (preimenovanje automatskih funkcija).Premjestite kod histograma/statistike na objektne metode (preuređivanje histograma/statistike).
Preimenujte
find_features()scale=uscale_factor=(preimenovanje find_features).Koristite pristupnike objekata mrlja i zamijenite
find_markers()sfind_blobs(merge=True, ...)(promjena find_blobs); zamijeniteimg.copy_to_fb()imenovanim argumentomcopy_to_fb=(promjena copy_to_fb).Ograničite kvalitetu
compress()na 1–100 i ponovno provjerite JPEG veličine na OpenMV 3 (promjena compress); ponovno podesite zoomlens_corr()(promjena lens_corr).
Sve ostale skripte rade nepromijenjeno.