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-APIset_auto_gain() / set_auto_exposure() / set_auto_whitebal() gebruiken nu dB / microseconden, met bijbehorende get_gain_db() / get_exposure_us() / get_rgb_gain_db().

  • Fasecorrelatie — herziene find_displacement() met rotatie / schaal en find_rotscale() / linpolar() / logpolar().

  • SSIMimage.get_similarity() structurele gelijkenis.

  • Extra framebufferssensor.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 AprilTag z_rotation() zijn allemaal gewijzigd — zie de breaking changes.

Nieuwe functies

  • Sensorsensor.get_gain_db(), sensor.get_exposure_us(), sensor.get_rgb_gain_db(), een gain_db_ceiling-keyword op set_auto_gain(), MT9V034 hmirror / vflip-ondersteuning, en sensor.alloc_extra_fb() / sensor.dealloc_extra_fb() voor extra framebuffers in RAM toegevoegd.

  • Imageremove_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 filters mean() / 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 nu uart.ini bij het opstarten om een REPL-UART in te schakelen.

Overige wijzigingen en verbeteringen

  • get_regression() kreeg area_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 in logpolar / linpolar en het op hol slaan van illuminvar() bij bijna-nul-kleurwaarden gecorrigeerd.

Sensor en systeem:

  • Bugs in de automatische versterkingsregeling gecorrigeerd, de MAIN_FB-grootte hersteld bij snapshot() (zodat copy_to_fb op een andere resolutie, FB-resize en optical-flow-pooling weer werken), de WINC gethostbyname-timeout, de pydfu clear-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).

Commits: c78f91b42, 213396d09

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:

  1. Port set_auto_gain() naar gain_db= + get_gain_db() en handel ValueError af (de auto-gain-herziening).

  2. Port set_auto_exposure() naar exposure_us= + get_exposure_us() (de auto-belichtingsherziening).

  3. Werk find_displacement() bij naar het displacement-object en hernoem de FFT-framesize-constanten (de find_displacement-vernieuwing).

  4. Port set_auto_whitebal() naar rgb_gain_db= + get_rgb_gain_db() (de witbalansherziening) en stop met het controleren van de retourwaarde van set_hmirror() / set_vflip() (de mirror/flip-wijziging).

  5. Geef een firmwarepad mee aan de WINC fw_*-tools (de WINC-tools-wijziging).

  6. Geef een 28x28 roi mee aan find_number() (de find_number-wijziging) en pas de AprilTag-hoekberekening aan voor het omgekeerde teken van z_rotation() (de z_rotation-wijziging).

Alle overige scripts draaien ongewijzigd.