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.