v3.6.1¶
v3.6.1 is een grote release. Deze introduceert de imu module (LSM6DS3), een reeks nieuwe sensor getter-API’s met IMU-gestuurde automatische rotatie, 4-punts perspectiefcorrectie rotation_corr(), en brengt de Arduino Portenta H7 tot leven met de HIMAX HM01B0 en OV7690 camera’s. Verschillende sensor / image API’s zijn gewijzigd en TensorFlow is op de M7 verwijderd — lees de breaking changes hieronder.
Hoogtepunten¶
imumodule — versnellingsmeter / gyroscoop / temperatuur / roll / pitch op de LSM6DS3 (OpenMV 4 / Portenta).Sensor-getters + automatische rotatie —
get_pixformat()/get_framesize()/get_hmirror()/get_vflip()/get_windowing(),set_transpose()/set_auto_rotation(), en IMU-gestuurde rotatie van de momentopname.Perspectiefcorrectie —
rotation_corr()krijgt de keywordsfovencorners(4-punts).Nieuwe hardware — Arduino Portenta H7, HIMAX HM01B0 en OV7690 camera.
Breaking:
set_pixformat()/set_framesize()geven nuNoneterug,sensor.set_framerate()is verwijderd, TensorFlow is op de M7 verwijderd, enlens_corr()/linpolar()vereisen nu even afmetingen — zie de breaking changes.
Nieuwe functies¶
imu— een nieuwe IMU-module:imu.acceleration_mg(),imu.angular_rate_mdps(),imu.temperature_c(),imu.roll(),imu.pitch(), enimu.sleep()(LSM6DS3 op OpenMV 4 / Portenta).Sensor-getters — toegevoegd
sensor.get_pixformat(),get_framesize(),get_hmirror(),get_vflip(),get_windowing(),set_transpose()/get_transpose(), enset_auto_rotation()/get_auto_rotation().Automatische rotatie —
sensor.snapshot()gebruikt de IMU om frames te spiegelen / kantelen / transponeren wanneer automatische rotatie is ingeschakeld.rotation_corr()— de keywordsfovencorners(4-punts perspectief) toegevoegd, met voorbeelden van perspectiefcorrectie.lcd.init()— eenbgrkeyword-argument toegevoegd.collections.deque— ingeschakeld in de MicroPython-build.sensor.OV7690ensensor.HM01B0id-constanten toegevoegd, plus een numpy-achtigulabvoorbeeld van een afbeeldingsfilter.
Overige wijzigingen en verbeteringen¶
De afbeeldingsfilters (median / mode / mean / …) en
find_circles()en lenscorrectie zijn aanzienlijk geoptimaliseerd;alloc_extra_fbkan nu een willekeurig aantal bytes alloceren; het persoonsdetectiemodel is opnieuw gebouwd met een nieuwe average-pool-operatie.
Bugfixes¶
Camera en sensoren:
OV2640
sleep()gerepareerd (gebruikt nu het COM2 standby-register in plaats van de power-down-pin), de FSYNC-pinconfiguratie, de HM01B0 HSYNC/VSYNC-polariteiten en I2C-adres/scanning, de power-down-GPIO en camera-reset-pin van de Portenta-sensor, en automatische rotatie uitgeschakeld wanneer de IMU-pitch nabij 90°/270° is.
Beeldverwerking en systeem:
Een grenscontrolebug in een afbeeldingsfilter gerepareerd, een hardfault bij het uitschakelen van de D-cache, het opstarten op boards zonder SD-kaart, een
tf.load()load_to_fbbug, de stackoverflow van persoonsdetectie (H7-stack verhoogd naar ≥12 KB), en de USB-descriptoroffsets voor de high-speed-modus op de OpenMV 4 Plus.
Hardware- en board-ondersteuning¶
Arduino Portenta H7 — initiële board-bring-up (STM32H747 clock/OSC/HSE-configuratie, CMSIS-headers, ADC, SDRAM, Arduino USB PID).
HIMAX HM01B0 — nieuwe monochrome cameradriver (Bayer, externe-oscillatorklok).
OV7690 — nieuwe cameradriver.
LSM6DS3 IMU — OpenMV 4 / Portenta.
Breaking API-wijzigingen¶
Voor de gebruiker zichtbare API-breaks tussen v3.6.0 en v3.6.1. Scope: Python C-modules in modules/ en Python-bibliotheken in scripts/libraries/.
Elke wijziging is gemarkeerd met de impact ervan:
minor — beperkte API; treft alleen scripts die deze gebruikten.
behavior — dezelfde API, andere resultaten; controleer afgestelde scripts opnieuw.
Wijzigingen zijn in die volgorde op impact gegroepeerd. Als je alleen je code wilt porten, ga dan naar de migratiechecklist aan het eind. Elke commit-hash linkt naar de diff ervan op GitHub.
sensor.set_framerate() verwijderd (minor)¶
De no-op-stub sensor.set_framerate() is verwijderd; aanroepen ervan veroorzaakt nu een AttributeError. Verwijder de aanroep en regel de frame-timing in plaats daarvan via framesize/belichting. (Een werkende set_framerate() wordt opnieuw geïntroduceerd in v4.0.2.)
Commits: 705e98f91
TensorFlow verwijderd op de OpenMV Cam M7 (minor)¶
TensorFlow (de tf module) is uitgeschakeld op de OpenMV Cam M7 / OpenMV 3 (het past niet meer). import tf op de M7 mislukt — gebruik een camera uit de H7-klasse voor TensorFlow. (tf wordt op de F7 opnieuw ingeschakeld in v3.6.3.)
Commits: 2ae875077
set_pixformat() / set_framesize() geven None terug (behavior)¶
sensor.set_pixformat() en sensor.set_framesize() geven nu None terug in plaats van True, en een niet-ondersteund pixelformaat veroorzaakt nu een ValueError in plaats van een assertion. Code die de retourwaarde controleerde (bijv. if sensor.set_pixformat(...):) moet daarmee stoppen, en code die AssertionError opving voor niet-ondersteunde formaten moet ValueError opvangen.
Commits: f314ac4e7
lens_corr() / linpolar() / logpolar() vereisen even afmetingen (behavior)¶
image.lens_corr() en image.linpolar() / image.logpolar() vereisen nu een even afbeeldingsbreedte en -hoogte en veroorzaken een fout bij oneven afmetingen. Crop of schaal de afbeelding naar even afmetingen voordat je deze methoden aanroept.
Migratiechecklist¶
Voor een schone port naar v3.6.1 is het typische werk:
Verwijder
sensor.set_framerate()aanroepen (de verwijdering van set_framerate).Verplaats TensorFlow-werklasten weg van de OpenMV Cam M7 (de M7 TensorFlow-wijziging).
Vertrouw niet langer op de retourwaarde van
set_pixformat()/set_framesize()en vangValueErrorop voor niet-ondersteunde pixelformaten (de retourwaarde-wijziging).Zorg voor even afbeeldingsafmetingen vóór
lens_corr()/linpolar()/logpolar()(de even-afmetingen-vereiste).
Alle overige scripts draaien ongewijzigd.