v2.1.0¶
v2.1.0 är en omfattande release för API-modernisering. Den ersätter FREAK-nyckelpunktsdeskriptorn med ORB, omarbetar find_blobs() / histogram / statistik till objektbaserade API:er, döper om sensor-funktionerna för automatisk exponering/förstärkning/vitbalans, lägger till QR-kodsdetektering och OV7725-linskorrigering, och startar upp det första OpenMV Cam M7-kortet. Många API:er ändrades — läs de brytande ändringarna nedan.
Höjdpunkter¶
ORB-nyckelpunkter — FREAK-deskriptorn ersattes med ORB (
find_keypoints()/match_descriptor()omarbetade).Objekt-API:er —
find_blobs(),get_histogram(),get_statistics()returnerar nu objekt med namngivna åtkomstmetoder.QR-koder —
image.find_qrcodes()-detektering tillagd.OpenMV Cam M7 — första kortstöd.
Sensor —
set_auto_whitebal()/set_auto_gain()/set_auto_exposure()(omdöpta) ochset_lens_correction().Brytande: API:erna för nyckelpunkter/deskriptorer, blob/histogram/statistik, sensorns auto-funktioner och flera andra ändrades — se de brytande ändringarna.
Nya funktioner¶
OpenMV Cam M7 — lade till första stöd för OpenMV 3 (M7)-kortet.
QR-koder — lade till
image.find_qrcodes()med ettqrcodes.py-exempel.ORB-nyckelpunkter — nytt ORB-deskriptorsystem:
find_keypoints()med ettcorner_detector-argument (CORNER_FAST/CORNER_AGAST),max_keypoints/scale_factor;match_descriptor()med ettfilter_outliers-nyckelord och en rotationsskattning; spara/läs in nyckelpunkter.Objekt-API:er —
image.get_histogram()/get_statistics()/get_percentile()returnerar histogram-/statistikobjekt;find_blobs()returnerar blob-objekt (rect()/cx()/cy()/code()/area()/pixels()) medarea_threshold/pixels_threshold/merge/margin/invertochx_stride/y_stride.Sensor — lade till
sensor.set_lens_correction(enable, radi, coef)för OV7725-linsskuggning,sensor.set_windowing()accepterar nu även en(w, h)-tupel (autocentrerad), ochimage.Image(..., copy_to_fb=True)/load_image(copy_to_fb=True).Lade till exempelskript för färgspårning, Arduino SPI/I2C-slav, nyckelpunkter och histogram/statistik.
Övriga ändringar och förbättringar¶
IDE:n kan nu avbryta ett körande
main.py; snabbarefind_blobs()/find_qrcodes()/get_statistics(); ORB använder ett popcount-Hamming-avstånd; linskorrigering använder mindre RAM; en Linux-udev-regel hindrar ModemManager från att ta serieporten.
Buggfixar¶
Kamera och bildbehandling:
Åtgärdade M7:s DMA-cache-rensning/-invalidering (korrupta bildrutor), en falsk extra rad i slutet av varje bildruta, gränser för JPEG-bildbuffertöverflöde, frigöring av bildbufferten vid
compress()-fel, ORB-noggrannhet / ROI / hantering av tom uppsättning, och geometrin förload_image(copy_to_fb=True).
System:
Åtgärdade F7 ADC-stöd, ett OV7725-registernamn, startladdar-/USB-timing, använde WFI under väntan på stillbilder och gjorde MJPEG-strömningsexemplet icke-blockerande med per-klient-timeouter.
Hårdvaru- och kortstöd¶
OpenMV Cam M7 (OpenMV 3) — första kortstöd.
OV7725 — stöd för linskorrigering (skuggning).
Brytande API-ändringar¶
Användarsynliga API-brytningar mellan v2.0.0 och v2.1.0. Omfattning: Python-C-moduler i modules/ och Python-bibliotek i scripts/libraries/.
Varje ändring är märkt med sin påverkan:
major — påverkar de flesta skript som använde funktionen; du kommer att behöva porta kod.
minor — smalt API; påverkar bara skript som använde det.
behavior — samma API, olika resultat; kontrollera justerade skript på nytt.
Ändringarna är grupperade efter påverkan i den ordningen. Om du bara vill porta din kod, hoppa till migreringschecklistan i slutet. Varje commit-hash länkar till sin diff på GitHub.
FREAK ersatt med ORB; deskriptor-API:t omarbetat (major)¶
FREAK-nyckelpunktsdeskriptorn togs bort och ersattes med ORB: image.FREAK finns inte längre (använd image.ORB). image.match_descriptor() / save_descriptor() / load_descriptor() tar inte längre ett inledande deskriptortyp-argument (det härleds från objektet), match_descriptor() returnerar nu en 8-elements tupel (cx, cy, x, y, w, h, match_count, rotation) (det sista elementet är ett rått antal, inte en procentandel), och draw_keypoints() kräver ett nyckelpunktsobjekt i stället för en rå (x, y, angle)-lista. find_keypoints() fick corner_detector / max_keypoints / scale_factor med ändrade standardvärden.
Omdöpning av sensorns auto-funktioner (major)¶
sensor.set_whitebal() / set_gain_ctrl() / set_exposure_ctrl() döptes om till sensor.set_auto_whitebal() / set_auto_gain() / set_auto_exposure() (de gamla namnen togs bort). Var och en fick ett valfritt value=-nyckelord för att ställa in ett manuellt värde i stället för auto.
Commits: 1b22a2961
Histogram / statistik omarbetat till objekt-API:er (major)¶
Histogram-/statistikytan omarbetades till objektbaserade image.get_histogram() / get_statistics() / get_percentile() som returnerar histogram-/statistikobjekt. De gamla platta histogram-/statistikresultaten och metoderna bin_count / l_bin_count / a_bin_count / b_bin_count togs bort (använd len(histogram.bins()) osv.).
find_features() scale omdöpt (major)¶
image.find_features() (Haar) döpte om sitt scale=-nyckelord till scale_factor=. Uppdatera find_features(cascade, scale=...)-anrop till scale_factor=....
Commits: 96e4f770c
find_blobs() returnerar objekt; find_markers() borttagen (minor)¶
image.find_blobs() returnerar nu blob-objekt med namngivna åtkomstmetoder (indexåtkomst fungerar fortfarande för bakåtkompatibilitet), och image.find_markers() togs bort — använd find_blobs(..., merge=True, margin=...) i stället. Det avancerade återanropet för färgblob-filter stöds inte längre.
Commits: af15ec6eb
img.copy_to_fb() ersatt (minor)¶
Metoden img.copy_to_fb() ersattes av ett copy_to_fb=-nyckelord på image.Image / load_image(). Använd image.Image(path, copy_to_fb=True) för att läsa in stora bilder direkt i bildbufferten.
Commits: 1645ab94b
compress() avvisar kvalitet utanför intervallet (behavior)¶
image.compress() / compressed() utlöser nu ett fel när quality ligger utanför 1–100 i stället för att tyst klippa värdet. Klipp quality till 1–100 före anropet. Separat reducerades OpenMV 3:s JPEG-buffert från 64 KB till 23000 byte, så stora bildrutor kan nu utlösa minnesbrist — sänk JPEG-kvaliteten eller bildrutestorleken.
lens_corr()-zoom fungerar nu (behavior)¶
image.lens_corr() tillämpar nu faktiskt sitt zoom-argument (det tolkades tidigare men hade ingen effekt), så utdata skiljer sig för skript som skickade en icke-standard zoom. Kontrollera lens_corr()-justeringen på nytt.
Commits: d6b49adef
Migreringschecklista¶
För en ren portning till v2.1.0 är det typiska arbetet:
Ersätt
image.FREAKmedimage.ORB, ta bort deskriptortyp-argumentet och uppdatera tupeluppackningen imatch_descriptor()/draw_keypoints()till nyckelpunktsobjektet (ORB-omarbetningen).Döp om
sensor.set_whitebal()/set_gain_ctrl()/set_exposure_ctrl()tillset_auto_*-formerna (omdöpningen av auto-funktioner).Flytta histogram-/statistikkod till objektmetoderna (histogram-/statistikomarbetningen).
Döp om
find_features()scale=tillscale_factor=(find_features-omdöpningen).Använd blob-objektens åtkomstmetoder och ersätt
find_markers()medfind_blobs(merge=True, ...)(find_blobs-ändringen); ersättimg.copy_to_fb()medcopy_to_fb=-nyckelordet (copy_to_fb-ändringen).Klipp
compress()-kvaliteten till 1–100 och kontrollera JPEG-storlekar på OpenMV 3 på nytt (compress-ändringen); justera omlens_corr()-zoom (lens_corr-ändringen).
Alla övriga skript körs oförändrade.