v2.1.0¶
v2.1.0 is een omvangrijke API-moderniseringsrelease. Het vervangt de FREAK-sleutelpuntdescriptor door ORB, herwerkt find_blobs() / histogrammen / statistieken tot objectgebaseerde API’s, hernoemt de sensor functies voor automatische belichting/versterking/witbalans, voegt QR-codedetectie en OV7725-lenscorrectie toe, en brengt het eerste OpenMV Cam M7-board tot leven. Veel API’s zijn gewijzigd — lees de breaking changes hieronder.
Hoogtepunten¶
ORB-sleutelpunten — de FREAK-descriptor is vervangen door ORB (
find_keypoints()/match_descriptor()herwerkt).Object-API’s —
find_blobs(),get_histogram(),get_statistics()retourneren nu objecten met benoemde accessors.QR-codes —
image.find_qrcodes()-detectie toegevoegd.OpenMV Cam M7 — eerste boardondersteuning.
Sensor —
set_auto_whitebal()/set_auto_gain()/set_auto_exposure()(hernoemd) enset_lens_correction().Breaking: de sleutelpunt/descriptor-, blob/histogram/statistiek-, sensor-automatische-functie- en diverse andere API’s zijn gewijzigd — zie de breaking changes.
Nieuwe functies¶
OpenMV Cam M7 — eerste ondersteuning voor het OpenMV 3 (M7) board toegevoegd.
QR-codes —
image.find_qrcodes()toegevoegd met eenqrcodes.py-voorbeeld.ORB-sleutelpunten — nieuw ORB-descriptorsysteem:
find_keypoints()met eencorner_detector-argument (CORNER_FAST/CORNER_AGAST),max_keypoints/scale_factor;match_descriptor()met eenfilter_outliers-keyword en een rotatieschatting; sleutelpunten opslaan/laden.Object-API’s —
image.get_histogram()/get_statistics()/get_percentile()retourneren histogram-/statistiekobjecten;find_blobs()retourneert blob-objecten (rect()/cx()/cy()/code()/area()/pixels()) metarea_threshold/pixels_threshold/merge/margin/invertenx_stride/y_stride.Sensor —
sensor.set_lens_correction(enable, radi, coef)toegevoegd voor OV7725-lensschaduwing,sensor.set_windowing()accepteert nu ook een(w, h)-tuple (automatisch gecentreerd), enimage.Image(..., copy_to_fb=True)/load_image(copy_to_fb=True).Voorbeeldscripts toegevoegd voor kleurtracking, Arduino SPI/I2C-slave, sleutelpunten en histogram/statistiek.
Overige wijzigingen en verbeteringen¶
De IDE kan nu een draaiende
main.pyonderbreken; snellerefind_blobs()/find_qrcodes()/get_statistics(); ORB gebruikt een popcount Hamming-afstand; lenscorrectie gebruikt minder RAM; een Linuxudev-regel voorkomt dat ModemManager de seriële poort grijpt.
Bugfixes¶
Camera en beeldverwerking:
M7 DMA cache clean/invalidate gerepareerd (beschadigde frames), een spurieuze extra regel aan het einde van elk frame, JPEG-framebuffer-overloopgrenzen, het vrijgeven van de framebuffer bij
compress()-fout, ORB-nauwkeurigheid / ROI / afhandeling van lege set, en de geometrie vanload_image(copy_to_fb=True).
Systeem:
F7 ADC-ondersteuning gerepareerd, een OV7725-registernaam, bootloader/USB-timing, WFI gebruikt tijdens het wachten op momentopnames, en het MJPEG-streamervoorbeeld niet-blokkerend gemaakt met per-client-timeouts.
Hardware- en boardondersteuning¶
OpenMV Cam M7 (OpenMV 3) — eerste boardondersteuning.
OV7725 — ondersteuning voor lenscorrectie (schaduwing).
Breaking API-wijzigingen¶
Voor de gebruiker zichtbare API-breaks tussen v2.0.0 en v2.1.0. Bereik: Python C-modules in modules/ en Python-bibliotheken in scripts/libraries/.
Elke wijziging is gemarkeerd met de impact ervan:
major — raakt de meeste scripts die de functie gebruikten; je zult code moeten porten.
minor — beperkte API; raakt alleen scripts die deze gebruikten.
behavior — dezelfde API, andere resultaten; controleer afgestelde scripts opnieuw.
Wijzigingen zijn in die volgorde gegroepeerd op impact. Als je je code alleen wilt porten, ga dan naar de migratiechecklist aan het einde. Elke commit-hash linkt naar de bijbehorende diff op GitHub.
FREAK vervangen door ORB; descriptor-API herwerkt (major)¶
De FREAK-sleutelpuntdescriptor is verwijderd en vervangen door ORB: image.FREAK bestaat niet meer (gebruik image.ORB). image.match_descriptor() / save_descriptor() / load_descriptor() nemen niet langer een voorafgaand descriptor-type-argument (het wordt afgeleid uit het object), match_descriptor() retourneert nu een 8-elementen-tuple (cx, cy, x, y, w, h, match_count, rotation) (het laatste element is een ruwe telling, geen percentage), en draw_keypoints() vereist een sleutelpuntenobject in plaats van een ruwe (x, y, angle)-lijst. find_keypoints() kreeg corner_detector / max_keypoints / scale_factor met gewijzigde standaardwaarden.
Sensor-automatische-functie hernoemd (major)¶
sensor.set_whitebal() / set_gain_ctrl() / set_exposure_ctrl() zijn hernoemd naar sensor.set_auto_whitebal() / set_auto_gain() / set_auto_exposure() (de oude namen zijn verwijderd). Elk kreeg een optioneel value=-keyword om een handmatige waarde in te stellen in plaats van automatisch.
Commits: 1b22a2961
Histogram / statistiek herwerkt naar object-API’s (major)¶
Het histogram-/statistiekoppervlak is herwerkt tot objectgebaseerde image.get_histogram() / get_statistics() / get_percentile() die histogram-/statistiekobjecten retourneren. De oude vlakke histogram-/statistiekresultaten en de methoden bin_count / l_bin_count / a_bin_count / b_bin_count zijn verwijderd (gebruik len(histogram.bins()) enz.).
find_features() scale hernoemd (major)¶
image.find_features() (Haar) hernoemde zijn scale=-keyword naar scale_factor=. Werk find_features(cascade, scale=...)-aanroepen bij naar scale_factor=....
Commits: 96e4f770c
find_blobs() retourneert objecten; find_markers() verwijderd (minor)¶
image.find_blobs() retourneert nu blob-objecten met benoemde accessors (indextoegang werkt nog voor achterwaartse compatibiliteit), en image.find_markers() is verwijderd — gebruik in plaats daarvan find_blobs(..., merge=True, margin=...). De geavanceerde kleur-blob-filtercallback wordt niet langer ondersteund.
Commits: af15ec6eb
img.copy_to_fb() vervangen (minor)¶
De methode img.copy_to_fb() is vervangen door een copy_to_fb=-keyword op image.Image / load_image(). Gebruik image.Image(path, copy_to_fb=True) om grote afbeeldingen rechtstreeks in de framebuffer te laden.
Commits: 1645ab94b
compress() weigert kwaliteit buiten bereik (behavior)¶
image.compress() / compressed() werpen nu een fout op wanneer quality buiten 1–100 valt, in plaats van stilzwijgend te klemmen. Klem quality binnen 1–100 voordat je aanroept. Daarnaast is de JPEG-buffer van de OpenMV 3 verkleind van 64 KB naar 23000 bytes, dus grote frames kunnen nu een out-of-memory opwerpen — verlaag de JPEG-kwaliteit of framesize.
lens_corr() zoom is nu functioneel (behavior)¶
image.lens_corr() past nu daadwerkelijk zijn zoom-argument toe (het werd voorheen geparsed maar had geen effect), dus de uitvoer verschilt voor scripts die een niet-standaard zoom doorgaven. Controleer de afstemming van lens_corr() opnieuw.
Commits: d6b49adef
Migratiechecklist¶
Voor een schone port naar v2.1.0 is het typische werk:
Vervang
image.FREAKdoorimage.ORB, laat het descriptor-type-argument vallen, en werk de tuple-uitpakking vanmatch_descriptor()/draw_keypoints()bij naar het sleutelpuntenobject (de ORB-herwerking).Hernoem
sensor.set_whitebal()/set_gain_ctrl()/set_exposure_ctrl()naar deset_auto_*-vormen (de automatische-functie-hernoeming).Verplaats histogram-/statistiekcode naar de objectmethoden (de histogram-/statistiekherwerking).
Hernoem
find_features()scale=naarscale_factor=(de find_features-hernoeming).Gebruik blob-objectaccessors en vervang
find_markers()doorfind_blobs(merge=True, ...)(de find_blobs-wijziging); vervangimg.copy_to_fb()door hetcopy_to_fb=-keyword (de copy_to_fb-wijziging).Klem de
compress()-kwaliteit naar 1–100 en controleer JPEG-groottes op de OpenMV 3 opnieuw (de compress-wijziging); stem delens_corr()-zoom opnieuw af (de lens_corr-wijziging).
Alle overige scripts draaien ongewijzigd.