v3.6.1¶
v3.6.1 es una versión importante. Introduce el módulo imu (LSM6DS3), un conjunto de nuevas APIs getter de sensor con rotación automática basada en la IMU, corrección de perspectiva de 4 puntos rotation_corr(), y pone en marcha la Arduino Portenta H7 con las cámaras HIMAX HM01B0 y OV7690. Varias APIs de sensor / image cambiaron y se eliminó TensorFlow en la M7 — lee los cambios incompatibles a continuación.
Aspectos destacados¶
imumódulo — acelerómetro / giroscopio / temperatura / alabeo / cabeceo en el LSM6DS3 (OpenMV 4 / Portenta).Getters del sensor + rotación automática —
get_pixformat()/get_framesize()/get_hmirror()/get_vflip()/get_windowing(),set_transpose()/set_auto_rotation(), y rotación de la captura basada en la IMU.Corrección de perspectiva —
rotation_corr()incorpora las palabras clavefovycorners(4 puntos).Nuevo hardware — Arduino Portenta H7, HIMAX HM01B0 y cámara OV7690.
Incompatible:
set_pixformat()/set_framesize()ahora devuelvenNone, se eliminósensor.set_framerate(), se descartó TensorFlow en la M7, ylens_corr()/linpolar()ahora requieren dimensiones pares — consulta los cambios incompatibles.
Nuevas funciones¶
imu— un nuevo módulo IMU:imu.acceleration_mg(),imu.angular_rate_mdps(),imu.temperature_c(),imu.roll(),imu.pitch()yimu.sleep()(LSM6DS3 en OpenMV 4 / Portenta).Getters del sensor — se añadieron
sensor.get_pixformat(),get_framesize(),get_hmirror(),get_vflip(),get_windowing(),set_transpose()/get_transpose()yset_auto_rotation()/get_auto_rotation().Rotación automática —
sensor.snapshot()usa la IMU para voltear / reflejar / transponer fotogramas cuando la rotación automática está habilitada.rotation_corr()— se añadieron las palabras clavefovycorners(perspectiva de 4 puntos), con ejemplos de corrección de perspectiva.lcd.init()— se añadió un argumento de palabra clavebgr.collections.deque— habilitado en la compilación de MicroPython.Se añadieron las constantes de id
sensor.OV7690ysensor.HM01B0y un ejemplo de filtro de imagen al estilo numpy conulab.
Otros cambios y mejoras¶
Se optimizaron significativamente los filtros de imagen (mediana / moda / media / …) y
find_circles()y la corrección de lente;alloc_extra_fbahora puede asignar cualquier número de bytes; el modelo de detección de personas se reconstruyó con una nueva operación de average-pool.
Corrección de errores¶
Cámara y sensores:
Se corrigió
sleep()del OV2640 (ahora usa el registro de standby COM2 en lugar del pin de apagado), la configuración del pin FSYNC, las polaridades HSYNC/VSYNC del HM01B0 y la dirección/escaneo I2C, el GPIO de apagado del sensor de la Portenta y el pin de reset de la cámara, y se deshabilitó la rotación automática cuando el cabeceo de la IMU está cerca de 90°/270°.
Imagen y sistema:
Se corrigió un error de comprobación de límites en un filtro de imagen, un hardfault al deshabilitar la caché D, el arranque en placas sin tarjeta SD, un error de
load_to_fbentf.load(), el desbordamiento de pila de la detección de personas (la pila de la H7 se elevó a ≥12 KB), y los offsets del descriptor USB para el modo de alta velocidad en la OpenMV 4 Plus.
Hardware y compatibilidad con placas¶
Arduino Portenta H7 — puesta en marcha inicial de la placa (configuración de reloj/OSC/HSE del STM32H747, cabeceras CMSIS, ADC, SDRAM, PID USB de Arduino).
HIMAX HM01B0 — nuevo controlador de cámara monocromática (Bayer, reloj de oscilador externo).
OV7690 — nuevo controlador de cámara.
IMU LSM6DS3 — OpenMV 4 / Portenta.
Cambios incompatibles en la API¶
Cambios de API visibles para el usuario entre v3.6.0 y v3.6.1. Alcance: módulos C de Python en modules/ y bibliotecas de Python en scripts/libraries/.
Cada cambio está etiquetado según su impacto:
minor — API reducida; solo afecta a los scripts que la usaban.
behavior — misma API, resultados diferentes; vuelve a comprobar los scripts ajustados.
Los cambios se agrupan por impacto en ese orden. Si solo quieres portar tu código, salta a la lista de comprobación de migración al final. Cada hash de commit enlaza a su diff en GitHub.
sensor.set_framerate() eliminado (minor)¶
Se eliminó el stub sin efecto sensor.set_framerate(); llamarlo ahora genera AttributeError. Elimina la llamada y controla el tiempo de los fotogramas mediante framesize/exposición en su lugar. (Un set_framerate() funcional se reintroduce en v4.0.2.)
Commits: 705e98f91
TensorFlow eliminado en la OpenMV Cam M7 (minor)¶
TensorFlow (el módulo tf) se deshabilitó en la OpenMV Cam M7 / OpenMV 3 (ya no cabe). import tf en la M7 falla — usa una cámara de clase H7 para TensorFlow. (tf se vuelve a habilitar en la F7 en v3.6.3.)
Commits: 2ae875077
set_pixformat() / set_framesize() devuelven None (behavior)¶
sensor.set_pixformat() y sensor.set_framesize() ahora devuelven None en lugar de True, y un formato de píxel no soportado ahora genera un ValueError en lugar de una aserción. El código que comprobaba el valor de retorno (p. ej. if sensor.set_pixformat(...):) debe dejar de hacerlo, y el código que capturaba AssertionError para formatos no soportados debe capturar ValueError.
Commits: f314ac4e7
lens_corr() / linpolar() / logpolar() requieren dimensiones pares (behavior)¶
image.lens_corr() e image.linpolar() / image.logpolar() ahora requieren un ancho y alto de imagen pares y generan un error con dimensiones impares. Recorta o redimensiona la imagen a dimensiones pares antes de llamar a estos métodos.
Lista de comprobación de migración¶
Para una migración limpia a v3.6.1 el trabajo típico es:
Eliminar las llamadas a
sensor.set_framerate()(la eliminación de set_framerate).Mover las cargas de trabajo de TensorFlow fuera de la OpenMV Cam M7 (el cambio de TensorFlow en la M7).
Dejar de depender del valor de retorno de
set_pixformat()/set_framesize()y capturarValueErrorpara formatos de píxel no soportados (el cambio del valor de retorno).Asegurar dimensiones de imagen pares antes de
lens_corr()/linpolar()/logpolar()(el requisito de dimensiones pares).
Todos los demás scripts se ejecutan sin cambios.