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.