v4.5.3¶
v4.5.3 es una versión importante: enfoque automático para el OV5640, dibujo de líneas con suavizado de bordes (anti-aliasing), un decodificador JPEG por hardware integrado en la rama principal, importantes mejoras de capacidad en el i.MX RT (RT1060) y un amplio conjunto de correcciones de cámara/ISP. Se eliminaron varios métodos de imagen poco usados y cambiaron algunas APIs de ISP/pantalla; lee los cambios incompatibles a continuación.
Aspectos destacados¶
Enfoque automático del OV5640 — habilitado en OpenMV 4 / 4 Plus / RT1060 (
sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS)), con un ejemplo.draw_line()con suavizado de bordes (anti-aliasing) y un decodificador JPEG por hardware del STM32 integrado en la rama principal (descompresión JPEG más rápida).OpenMV RT1060 incorporó ulab, operaciones de ISP,
set_framerate()/set_frame_callback(), un búfer de fotogramas (frame buffer) mucho más grande y el controlador CAN.Incompatible: se eliminaron
Image.div()/cartoon()/mul()y cambiaron algunas APIs de ISP/pantalla; consulta los cambios incompatibles.
Nuevas funciones¶
Enfoque automático del OV5640 — el firmware de enfoque automático está habilitado en OPENMV4, OPENMV4P y OPENMV RT1060; actívalo con
sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS). Se añadió un nuevo ejemplo07-Sensor-Control/autofocus.py.Dibujo de líneas con suavizado de bordes —
draw_line()incorporó suavizado de bordes (anti-aliasing).Controladores de pantalla SPI personalizados —
SPIDisplayahora acepta una palabra clavecontroller=y expone un enganchebus_writepara secuencias de inicialización/comandos personalizadas.Mejora de
Image.ccm()— ahora acepta matrices anidadas 3x3 / 4x3 / 3x4 / 4x4 y arrays de ulab (con una fila opcional de desplazamiento por canal); se añadió un ejemplo de corrección de color.Captura JPEG en i.MX RT — captura
sensor.JPEGen Arduino Portenta/Nicla Vision/Giga, además deset_framerate()yset_frame_callback()en el port mimxrt.Validación de modelos TFLite — los modelos ahora incluyen un hash del orden de operadores y el tamaño del conjunto de operadores.
WiFi — se añadieron constantes de modo de seguridad CYW43; nuevos scripts de ejemplo de control de placa para i.MX RT (Pin/ADC/CAN/I2C/PWM/SPI/UART/…).
Otros cambios y mejoras¶
MicroPython actualizado a 1.22; CMSIS actualizado a 5.9.0.
Decodificador JPEG por hardware del STM32 integrado en la rama principal — descompresión JPEG más rápida en el códec del chip.
Se optimizaron
Image.invert()/negate()y las operaciones binarias/matemáticas de imagen (intrínsecos de CMSIS).Las bibliotecas
rpcyvl53l1xse hicieron portables (usanmachine/timeen lugar depyb), por lo que funcionan en ports que no son STM32.memcpy del búfer de fotogramas acelerado por DMA en OpenMV H7 / H7 Plus / Pro / Pure Thermal y Arduino Giga / Nicla Vision / Portenta H7; el STM32 ahora explora los dispositivos I2C una vez por escaneo para un arranque más rápido.
Corrección de errores¶
Cámara y sensores:
Se corrigió el XCLK de la cámara del STM32 a un ciclo de trabajo real del 50% y un error cuando la frecuencia de reloj de la cámara se establece en cero; se corrigieron el recorte+transposición Bayer, el desplazamiento de color YUV422 y
set_windowing()en el port mimxrt.Se corrigieron la detección del ID del chip GC2145 y hmirror/vflip en montajes rotados; se corrigieron el PAJ6100 en el RT1062 y un desbordamiento de búfer SPI del PixArt PAJ7620/PAW3902.
Procesamiento de imágenes:
Se corrigieron el recorte de la roi en
find_rects(), el truncamiento del desplazamiento fraccionario enmorph(), los valores predeterminados de contraste/brillo deimage.gamma(), los desplazamientos A/B deget_threshold()en RGB565 y la decodificación JPEG de dimensiones que no son múltiplo de 8.
Sistema y bibliotecas:
machine.LED.value()sin argumentos ahora devuelve el estado del LED en lugar de borrarlo; se corrigieron la desinicialización de SSEL del SPI en un bus compartido,machine.deepsleep()en el RT1062, un fallo de TF ante operadores faltantes y la activación automática de la NIC WINC1500/ninaw10 al hacerconnect().
Hardware y compatibilidad de placas¶
OpenMV RT1060 — se habilitaron ulab y las operaciones de ISP, búfer de fotogramas más grande (10M→20M) / fb_alloc (2M→11M), se restauró el controlador CAN y más heap.
Arduino GIGA — compatibilidad con la cámara GC2145, con detección automática GC2145/OV5640 (comparten una dirección I2C).
i.MX RT — compatibilidad con la captura
sensor.JPEG.
Cambios incompatibles en la API¶
Cambios incompatibles en la API visibles para el usuario entre v4.5.2 y v4.5.3. Alcance: módulos C de Python en modules/ y bibliotecas de Python en scripts/libraries/.
Cada cambio está etiquetado según su impacto:
menor — API reducida; solo afecta a los scripts que la usaban.
comportamiento — misma API, resultados diferentes; vuelve a revisar los scripts ajustados.
Los cambios se agrupan por impacto en ese orden. Si solo quieres portar tu código, salta a la lista de verificación de migración al final. Cada hash de commit enlaza a su diff en GitHub.
Métodos de imagen eliminados (menor)¶
Se eliminaron Image.div(), Image.cartoon() (y su ejemplo) e Image.mul().
API del módulo de pantalla (menor)¶
Se eliminó el respaldo heredado del nombre de módulo udisplay; el módulo se registra únicamente como display. Los métodos dsi_write() / dsi_read() exclusivos de DSI se reemplazaron por bus_write() / bus_read(), que ahora están disponibles en todos los controladores de pantalla.
Cambios en la API de MQTT y tf.regression (menor)¶
Se rediseñó el MQTTClient de la biblioteca mqtt: port ahora es obligatorio, se añadieron las nuevas palabras clave de constructor ssl_params / callback y un argumento timeout en connect(), se eliminaron los antiguos valores predeterminados ssl= / port=0 y check_msg() ahora no es bloqueante. Se reescribió tf.regression() — su firma ahora es regression(model, array) y maneja modelos 1D/2D/3D y cuantizados (int8).
Cambios de comportamiento de ISP / sensor (comportamiento)¶
Se rediseñó Image.awb() — el modo mundo-gris (gray-world, predeterminado) frente al modo parche-blanco (white-patch, max=True) ahora es explícito, y el argumento max junto con los argumentos gamma / contrast / brightness de Image.gamma() ahora son exclusivos por palabra clave (las llamadas posicionales deben actualizarse). La transposición de imagen ahora está deshabilitada para YUV422 (antes producía una salida incorrecta) y se corrigió el desplazamiento de color YUV422 para que coincida con Bayer. La ruta JPEG del STM32 ahora lanza un error ante una discordancia de geometría JPEG en lugar de producir una imagen corrupta, y el modo AP de WiFi ahora aplica un modo de seguridad predeterminado en los ports STM32 e i.MX RT.
Commits: 36d5cecbd, 00500ccde, c1eeaefd6, 333fb2b5f, 55cab8733, c7d40f6af
Lista de verificación de migración¶
Para un porte limpio a v4.5.3, el trabajo habitual es:
Dejar de usar
Image.div()/cartoon()/mul()(los métodos eliminados).Importar el módulo de pantalla como
displayy cambiardsi_write/dsi_readporbus_write/bus_read(el cambio de la API de pantalla).Actualizar la construcción de
MQTTClient(portes obligatorio;ssl_params/callback) y cualquier llamada atf.regression()(los cambios en la API de las bibliotecas).Pasar
maxdeawb()ygamma/contrast/brightnessdegamma()como argumentos por palabra clave, y volver a revisar las suposiciones sobre YUV422/transposición y la seguridad del modo AP (los cambios de ISP/sensor).