v3.6.1#
v3.6.1 är en stor release. Den introducerar modulen imu (LSM6DS3), en uppsättning nya getter-API:er för sensor med IMU-driven autorotation, 4-punkts perspektivkorrigering rotation_corr() och tar upp Arduino Portenta H7 med kamerorna HIMAX HM01B0 och OV7690. Flera API:er i sensor / image ändrades och TensorFlow togs bort på M7 — läs de brytande ändringarna nedan.
Höjdpunkter#
imu-modul — accelerometer / gyro / temperatur / roll / pitch på LSM6DS3 (OpenMV 4 / Portenta).Sensor-getters + autorotation —
get_pixformat()/get_framesize()/get_hmirror()/get_vflip()/get_windowing(),set_transpose()/set_auto_rotation()samt IMU-driven stillbildsrotation.Perspektivkorrigering —
rotation_corr()får nyckelordenfovochcorners(4-punkts).Ny hårdvara — Arduino Portenta H7, HIMAX HM01B0 och OV7690-kamera.
Brytande:
set_pixformat()/set_framesize()returnerar nuNone,sensor.set_framerate()togs bort, TensorFlow togs bort på M7 ochlens_corr()/linpolar()kräver nu jämna dimensioner — se de brytande ändringarna.
Nya funktioner#
imu— en ny IMU-modul:imu.acceleration_mg(),imu.angular_rate_mdps(),imu.temperature_c(),imu.roll(),imu.pitch()ochimu.sleep()(LSM6DS3 på OpenMV 4 / Portenta).Sensor-getters — lade till
sensor.get_pixformat(),get_framesize(),get_hmirror(),get_vflip(),get_windowing(),set_transpose()/get_transpose()samtset_auto_rotation()/get_auto_rotation().Autorotation —
sensor.snapshot()använder IMU:n för att vända / spegla / transponera bildrutor när autorotation är aktiverat.rotation_corr()— lade till nyckelordenfovochcorners(4-punkts perspektiv), med exempel på perspektivkorrigering.lcd.init()— lade till ettbgr-nyckelordsargument.collections.deque— aktiverad i MicroPython-bygget.Lade till id-konstanterna
sensor.OV7690ochsensor.HM01B0samt ett numpy-liknande bildfilter-exempel medulab.
Övriga ändringar och förbättringar#
Optimerade bildfiltren (median / mode / mean / …) samt
find_circles()och linskorrigering avsevärt;alloc_extra_fbkan nu allokera valfritt antal byte; personavkänningsmodellen byggdes om med en ny average-pool-operation.
Buggfixar#
Kamera och sensorer:
Fixade OV2640
sleep()(använder nu COM2-standbyregistret i stället för power-down-stiftet), FSYNC-stiftkonfigurationen, HM01B0:s HSYNC/VSYNC-polariteter och I2C-adress/scanning, Portentas GPIO för sensorns power-down och kamerans reset-stift, samt inaktiverade autorotation när IMU:ns pitch är nära 90°/270°.
Bildbehandling och system:
Fixade en bugg i gränskontrollen för bildfilter, en hardfault vid inaktivering av D-cachen, uppstart på kort utan SD-kort, en
tf.load()-bugg medload_to_fb, stacköverflödet i personavkänningen (H7-stacken höjdes till ≥12 KB) samt USB-deskriptorernas offset för höghastighetsläge på OpenMV 4 Plus.
Hårdvaru- och kortstöd#
Arduino Portenta H7 — initial korttuppstart (STM32H747 klock-/OSC-/HSE-konfiguration, CMSIS-headers, ADC, SDRAM, Arduino USB PID).
HIMAX HM01B0 — ny monokrom kameradrivrutin (Bayer, klocka från extern oscillator).
OV7690 — ny kameradrivrutin.
LSM6DS3 IMU — OpenMV 4 / Portenta.
Brytande API-ändringar#
Användarsynliga API-brott mellan v3.6.0 och v3.6.1. Omfattning: Python-C-moduler i modules/ och Python-bibliotek i scripts/libraries/.
Varje ändring är märkt med sin påverkan:
minor — smalt API; påverkar endast skript som använde det.
behavior — samma API, andra resultat; kontrollera finjusterade skript på nytt.
Ändringarna är grupperade efter påverkan i den ordningen. Om du bara vill porta din kod, hoppa till migrationschecklistan i slutet. Varje commit-hash länkar till sin diff på GitHub.
sensor.set_framerate() borttagen (minor)#
No-op-stubben sensor.set_framerate() togs bort; att anropa den ger nu AttributeError. Ta bort anropet och styr i stället bildrutetajmningen via framesize/exponering. (En fungerande set_framerate() återinförs i v4.0.2.)
Commits: 705e98f91
TensorFlow borttaget på OpenMV Cam M7 (minor)#
TensorFlow (tf-modulen) inaktiverades på OpenMV Cam M7 / OpenMV 3 (det får inte längre plats). import tf på M7 misslyckas — använd en kamera i H7-klass för TensorFlow. (tf återaktiveras på F7 i v3.6.3.)
Commits: 2ae875077
set_pixformat() / set_framesize() returnerar None (behavior)#
sensor.set_pixformat() och sensor.set_framesize() returnerar nu None i stället för True, och ett pixelformat som inte stöds ger nu ValueError i stället för en assertion. Kod som kontrollerade returvärdet (t.ex. if sensor.set_pixformat(...):) måste sluta göra det, och kod som fångade AssertionError för format som inte stöds måste fånga ValueError.
Commits: f314ac4e7
lens_corr() / linpolar() / logpolar() kräver jämna dimensioner (behavior)#
image.lens_corr() och image.linpolar() / image.logpolar() kräver nu jämn bildbredd och -höjd och ger ett fel vid udda dimensioner. Beskär eller ändra storlek på bilden till jämna dimensioner innan du anropar dessa metoder.
Migrationschecklista#
För en ren portning till v3.6.1 är det typiska arbetet:
Ta bort anrop till
sensor.set_framerate()(borttagningen av set_framerate).Flytta TensorFlow-arbetslaster bort från OpenMV Cam M7 (TensorFlow-ändringen för M7).
Sluta förlita dig på returvärdet från
set_pixformat()/set_framesize()och fångaValueErrorför pixelformat som inte stöds (returvärdesändringen).Säkerställ jämna bilddimensioner innan
lens_corr()/linpolar()/logpolar()(kravet på jämna dimensioner).
Alla andra skript körs oförändrade.