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

  • imu module — versnellingsmeter / gyroscoop / temperatuur / roll / pitch op de LSM6DS3 (OpenMV 4 / Portenta).

  • Sensor-getters + automatische rotatieget_pixformat() / get_framesize() / get_hmirror() / get_vflip() / get_windowing(), set_transpose() / set_auto_rotation(), en IMU-gestuurde rotatie van de momentopname.

  • Perspectiefcorrectierotation_corr() krijgt de keywords fov en corners (4-punts).

  • Nieuwe hardware — Arduino Portenta H7, HIMAX HM01B0 en OV7690 camera.

  • Breaking: set_pixformat() / set_framesize() geven nu None terug, sensor.set_framerate() is verwijderd, TensorFlow is op de M7 verwijderd, en lens_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(), en imu.sleep() (LSM6DS3 op OpenMV 4 / Portenta).

  • Sensor-getters — toegevoegd sensor.get_pixformat(), get_framesize(), get_hmirror(), get_vflip(), get_windowing(), set_transpose() / get_transpose(), en set_auto_rotation() / get_auto_rotation().

  • Automatische rotatiesensor.snapshot() gebruikt de IMU om frames te spiegelen / kantelen / transponeren wanneer automatische rotatie is ingeschakeld.

  • rotation_corr() — de keywords fov en corners (4-punts perspectief) toegevoegd, met voorbeelden van perspectiefcorrectie.

  • lcd.init() — een bgr keyword-argument toegevoegd.

  • collections.deque — ingeschakeld in de MicroPython-build.

  • sensor.OV7690 en sensor.HM01B0 id-constanten toegevoegd, plus een numpy-achtig ulab voorbeeld van een afbeeldingsfilter.

Overige wijzigingen en verbeteringen

  • De afbeeldingsfilters (median / mode / mean / …) en find_circles() en lenscorrectie zijn aanzienlijk geoptimaliseerd; alloc_extra_fb kan 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_fb bug, 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.

Commits: b36460a36, 2b26ca17b

Migratiechecklist

Voor een schone port naar v3.6.1 is het typische werk:

  1. Verwijder sensor.set_framerate() aanroepen (de verwijdering van set_framerate).

  2. Verplaats TensorFlow-werklasten weg van de OpenMV Cam M7 (de M7 TensorFlow-wijziging).

  3. Vertrouw niet langer op de retourwaarde van set_pixformat() / set_framesize() en vang ValueError op voor niet-ondersteunde pixelformaten (de retourwaarde-wijziging).

  4. Zorg voor even afbeeldingsafmetingen vóór lens_corr() / linpolar() / logpolar() (de even-afmetingen-vereiste).

Alle overige scripts draaien ongewijzigd.