v2.7.0¶
v2.7.0 moderniseert de sensor auto-gain / auto-belichting / witbalans-API naar fysieke eenheden (dB / microseconden), vernieuwt de fasecorrelatie find_displacement() (met toevoeging van rotatie/schaal) en voegt get_similarity() (SSIM), chrominvar() / illuminvar(), extra framebuffers en een MQTT-library toe. Het is een grote breaking release — lees de breaking changes hieronder.
Hoogtepunten¶
Moderne sensor-API —
set_auto_gain()/set_auto_exposure()/set_auto_whitebal()gebruiken nu dB / microseconden, met bijbehorendeget_gain_db()/get_exposure_us()/get_rgb_gain_db().Fasecorrelatie — herziene
find_displacement()met rotatie / schaal enfind_rotscale()/linpolar()/logpolar().SSIM —
image.get_similarity()structurele gelijkenis.Extra framebuffers —
sensor.alloc_extra_fb()/dealloc_extra_fb().MQTT — een nieuwe MQTT-library.
Breaking: de sensor gain/belichting/witbalans-API,
find_displacement()/ FFT-framesizes,find_number(), de WINC-firmwaretools en AprilTagz_rotation()zijn allemaal gewijzigd — zie de breaking changes.
Nieuwe functies¶
Sensor —
sensor.get_gain_db(),sensor.get_exposure_us(),sensor.get_rgb_gain_db(), eengain_db_ceiling-keyword opset_auto_gain(), MT9V034hmirror/vflip-ondersteuning, ensensor.alloc_extra_fb()/sensor.dealloc_extra_fb()voor extra framebuffers in RAM toegevoegd.Image —
remove_shadows(),min()/max()(frameverschillen),get_similarity()(SSIM) met een voorbeeld van structurele gelijkenis,chrominvar()/illuminvar(),find_rotscale(),linpolar()/logpolar(), threshold- / offset- / invert-keywords op de adaptieve filtersmean()/mode()/median()/midpoint(),len()/ indexering op het keypoints-object, en een.match()-accessor op het keypoint-match-object toegevoegd.Libraries / netwerk — een MQTT-library toegevoegd (met een WiFi-MQTT-voorbeeld) en een
network.WINC.MODE_BSP-modus voor het programmeren van WINC-firmware via de debug-UART.Voorbeelden — low-power
deep_sleep.py/stop_mode.py, geavanceerde optical-flow- en lineaire/log-polar-voorbeeldscripts toegevoegd; de firmware parseert nuuart.inibij het opstarten om een REPL-UART in te schakelen.
Overige wijzigingen en verbeteringen¶
get_regression()kreegarea_threshold/pixels_threshold-keywords en een snellere robuuste regressie (voor lijnvolgen / racen);get_pixel()ondersteunt nu Bayer-afbeeldingen; STM32H7-basis toegevoegd (CMSIS-headers / HAL / bootloader — het H7-board is nog niet bruikbaar); de meegeleverde WINC1500-firmware bijgewerkt (19.4.4 / 19.5.2).
Bugfixes¶
Beeldverwerking:
De out-of-bounds-bug in de diamond-search van
find_template(), corruptie inlogpolar/linpolaren het op hol slaan vanilluminvar()bij bijna-nul-kleurwaarden gecorrigeerd.
Sensor en systeem:
Bugs in de automatische versterkingsregeling gecorrigeerd, de
MAIN_FB-grootte hersteld bijsnapshot()(zodatcopy_to_fbop een andere resolutie, FB-resize en optical-flow-pooling weer werken), de WINCgethostbyname-timeout, depydfuclear-status op de H7-bootloader, en de low-power stop-/standbymodi.
Hardware- en boardondersteuning¶
STM32H7 — basis (CMSIS / HAL / bootloader); het OpenMV H7-board is nog niet bruikbaar in deze release.
WINC1500 — meegeleverde firmware bijgewerkt.
Breaking API-wijzigingen¶
Voor de gebruiker zichtbare API-breaks tussen v2.6.0 en v2.7.0. Scope: Python C-modules in modules/ en Python-libraries in scripts/libraries/.
Elke wijziging is voorzien van een label met de impact ervan:
major — treft de meeste scripts die de functie gebruikten; je zult code moeten porten.
minor — beperkte API; treft alleen scripts die deze gebruikten.
behavior — dezelfde API, andere resultaten; controleer afgestelde scripts opnieuw.
Wijzigingen zijn in die volgorde gegroepeerd op impact. Als je alleen je code wilt porten, spring dan naar de migratiechecklist aan het eind. Elke commit-hash linkt naar de bijbehorende diff op GitHub.
sensor.set_auto_gain() herzien naar dB (major)¶
sensor.set_auto_gain() accepteert niet langer het integer value=-keyword en geeft niet langer True / False terug. Gebruik sensor.set_auto_gain(False, gain_db=...) (een float dB-waarde), lees het terug met de nieuwe sensor.get_gain_db(), en wikkel de aanroep in een try / except aangezien een fout nu een ValueError opwerpt.
Commits: b906c5f19
sensor.set_auto_exposure() herzien naar microseconden (major)¶
sensor.set_auto_exposure() accepteert niet langer het integer value=-keyword en geeft niet langer True / False terug. Gebruik sensor.set_auto_exposure(False, exposure_us=...), lees het terug met de nieuwe sensor.get_exposure_us(), en handel de ValueError af die bij een fout wordt opgeworpen.
Commits: 7be0a7a18
find_displacement() / FFT-framesizes vernieuwd (major)¶
De fasecorrelatie is vernieuwd. image.find_displacement() geeft nu een displacement-object terug (met x_translation() / y_translation() — voorheen x_offset / y_offset — plus rotation() / scale() en nieuwe logpolar / fix_rotation_scale-keywords); het aparte rot-scale-object is verwijderd en find_rotscale() toegevoegd. De FFT-framesize-constanten zijn hernoemd/verwijderd: sensor.B40x30 is volledig verwijderd, en sensor.B64x32 / B64x64 zijn hernoemd naar de hoofdletter-vorm sensor.B64X32 / B64X64 (met nieuwe B128X64 / B128X128).
sensor.set_auto_whitebal() herzien naar dB (minor)¶
sensor.set_auto_whitebal() verving zijn integer value=[r, g, b]-keyword door rgb_gain_db=[r, g, b] (float dB) en geeft nu None terug (en werpt bij een fout ValueError op) in plaats van True / False. Gebruik de nieuwe sensor.get_rgb_gain_db() om de versterkingen terug te lezen.
Commits: 30ecbdc4f
set_hmirror() / set_vflip() geven None terug (minor)¶
sensor.set_hmirror() en sensor.set_vflip() geven nu None terug en werpen bij een fout ValueError op in plaats van een True / False-status terug te geven. Verwijder alle code die op hun retourwaarde vertakt.
Commits: aeb023804
WINC-firmwaretools vereisen een bestandspad (minor)¶
network.WINC firmware-tooling is gewijzigd: wlan.fw_dump() / wlan.fw_update() nemen nu een verplicht argument met het firmware-bestandspad en de WINC wordt geopend in een programmeermodus (network.WINC(mode=...)). Werk argumentloze aanroepen bij zodat ze een pad meegeven (bijv. wlan.fw_update("/winc_19_5_2.bin")).
Commits: fcc3b0b9c
image.find_number() vereist een 28x28-ROI (behavior)¶
image.find_number() (LeNet) vereist nu een ROI van precies 28x28 die binnen de afbeelding past en werpt anders een fout op (in plaats van te draaien op een willekeurige/volledige-afbeelding-ROI). Geef een expliciete roi=(x, y, 28, 28) mee.
Commits: 4d09a13f3
AprilTag z_rotation() teken omgekeerd (behavior)¶
De AprilTag z_rotation() (en de gerelateerde rotation()) gebruikt nu een rechtshandige coördinatenconventie, dus de teruggegeven hoek is genegeerd ten opzichte van eerdere releases. Scripts die afhankelijk zijn van het oude teken moeten de waarde omkeren of hun hoekberekening aanpassen.
Commits: 7673aaf74
Migratiechecklist¶
Voor een schone port naar v2.7.0 is het gebruikelijke werk:
Port
set_auto_gain()naargain_db=+get_gain_db()en handelValueErroraf (de auto-gain-herziening).Port
set_auto_exposure()naarexposure_us=+get_exposure_us()(de auto-belichtingsherziening).Werk
find_displacement()bij naar het displacement-object en hernoem de FFT-framesize-constanten (de find_displacement-vernieuwing).Port
set_auto_whitebal()naarrgb_gain_db=+get_rgb_gain_db()(de witbalansherziening) en stop met het controleren van de retourwaarde vanset_hmirror()/set_vflip()(de mirror/flip-wijziging).Geef een firmwarepad mee aan de WINC
fw_*-tools (de WINC-tools-wijziging).Geef een 28x28
roimee aanfind_number()(de find_number-wijziging) en pas de AprilTag-hoekberekening aan voor het omgekeerde teken vanz_rotation()(de z_rotation-wijziging).
Alle overige scripts draaien ongewijzigd.