v4.5.1¶
v4.5.1 añade sugerencias de dibujo de orientación/relación de aspecto de imagen, carga de imágenes directamente desde una ruta de archivo, un ioctl de campo de visión amplio del GC2145 y una nueva API de controlador de retroiluminación. También rehace el constructor Image(), las API de display y el análisis de argumentos de los módulos — lee los cambios incompatibles a continuación.
Aspectos destacados¶
Sugerencias de dibujo —
draw_image()obtuvo sugerencias de orientación (HMIRROR/VFLIP/TRANSPOSE,ROTATE_90/180/270) y de escalado de aspecto (SCALE_ASPECT_KEEP/EXPAND/IGNORE).Carga de imágenes desde disco —
draw_image()/display.write()aceptan una cadena de ruta de archivo.Control de retroiluminación — nuevas clases
DACBacklight/PWMBacklighty un argumento de pantallabacklight=.Incompatible: el constructor
Image(), las API dedisplayy el análisis de argumentos de los módulos cambiaron — consulta los cambios incompatibles.
Nuevas funciones¶
Sugerencias de orientación de
draw_image()—image.HMIRROR,image.VFLIP,image.TRANSPOSE, además de las convenientesimage.ROTATE_90/ROTATE_180/ROTATE_270.Sugerencias de aspecto de
draw_image()—image.SCALE_ASPECT_KEEP/SCALE_ASPECT_EXPAND/SCALE_ASPECT_IGNOREpara ajustar / expandir / estirar.Constantes de paleta —
image.PALETTE_RAINBOWeimage.PALETTE_IRONBOW(movidas al módulo image).Campo de visión amplio — nuevos ioctls
sensor.IOCTL_SET_FOV_WIDE/IOCTL_GET_FOV_WIDE(en el GC2145, hasta 5x de escalado del sensor).Carga desde disco —
draw_image()ydisplay.write()aceptan una cadena de ruta de archivo de imagen de origen, cargándola directamente desde el almacenamiento.Controladores de retroiluminación — nuevas clases
DACBacklightyPWMBacklight(importables desdedisplay) y un argumentobacklight=solo por palabra clave en los constructores de pantalla SPI/paralela.
Otros cambios y mejoras¶
El controlador de pantalla DSI ST7701 se trasladó a su propio módulo
st7701.py(todavía importable mediantefrom display import *) y está congelado en Arduino Giga; el controlador IMUlsm9ds1se congeló en el Arduino Nano 33 BLE Sense.Las cámaras MT9V022 / MT9V034 (obturador global) ahora aplican corrección de ruido de fila para mejorar la calidad de imagen.
El volumen de almacenamiento masivo USB del i.MX RT ahora se etiqueta como un disco OpenMV.
Correcciones de errores¶
Cámara y sensores:
Se corrigió la detección de esquinas (
find_keypoints()FAST/AGAST) en imágenes de más de 480 filas — el búfer por fila ahora se dimensiona según la altura de la imagen.Se añadió compatibilidad con el pin FSYNC para
snapshot()sincronizado con fotogramas en i.MX RT (OpenMV RT1060) y se corrigieron los pines SPI4 MOSI/MISO intercambiados en el RT1060.
Pantalla y vídeo:
Se corrigió el orden de los argumentos del constructor
SPIDisplay(bgr,byte_swap,triple_bufferse aplicaban a los parámetros equivocados).Se corrigió la corrupción de imagen del shield TV al dibujar una imagen con un rectángulo especificado y los límites de fotograma MJPEG incorrectos al grabar fotogramas escalados.
Redes:
El modo AP WiFi del WINC ya no impone la obsoleta restricción de solo WEP — los modos AP abierto y WPA funcionan con un manejo adecuado de PSK.
Hardware y compatibilidad de placas¶
OpenMV RT1060 — pin FSYNC y pines SPI4 corregidos.
Arduino GIGA — solución alternativa de fiabilidad QSPI; pantalla ST7701 congelada.
Arduino Nano 33 BLE Sense — controlador IMU
lsm9ds1congelado.
Cambios incompatibles en la API¶
Cambios de la API visibles para el usuario entre v4.5.0 y v4.5.1. Alcance: módulos C de Python en modules/ y bibliotecas Python en scripts/libraries/.
Cada cambio está etiquetado con su impacto:
minor — API limitada; solo afecta a los scripts que la usaban.
behavior — misma API, resultados distintos; vuelve a revisar los scripts ajustados.
Los cambios se agrupan por impacto en ese orden. Si solo quieres portar tu código, ve directamente a la lista de verificación de migración al final. Cada hash de commit enlaza a su diff en GitHub.
Constructor Image() y API de display (minor)¶
El constructor image.Image se rehízo para usar argumentos por palabra clave (height, pixformat, buffer=, copy_to_fb=); ahora puede construir una imagen a partir de un bytearray/búfer existente, y se requiere un búfer para los formatos comprimidos. display.write() se rehízo: x_scale/y_scale ahora aceptan un float (relación de escala) o un int (tamaño objetivo en píxeles) y se eliminaron las palabras clave x_size/y_size separadas. El primer argumento posicional de WINC.connect() se renombró essid → ssid, y los resultados del escaneo WiFi del WINC cambiaron a (ssid_bytes, bssid_bytes, channel, rssi, security, N) (SSID/BSSID ahora son bytes; BSSID ya no es una cadena MAC formateada).
Rango de retroiluminación, escalado y argumentos solo por palabra clave (behavior)¶
Display.backlight() ahora acepta una intensidad de 0–100 (0 = apagado, 100 = máximo) en lugar de 0–255, lanzando ValueError fuera de rango. Los valores enteros de x_scale/y_scale ahora se tratan como un factor de escala multiplicativo (igual que los floats) en lugar de una dimensión objetivo en píxeles — esto afecta a fir.snapshot()/draw_ir(), tof.snapshot()/ draw_depth(), display y el escalado de tv. El análisis de argumentos en los módulos sensor, fir, tof, tv, mjpeg, gif, imageio, tf y audio se unificó, haciendo que varias opciones anteriormente posicionales sean solo por palabra clave (los nombres, valores predeterminados y comportamiento permanecen por lo demás sin cambios).
Commits: 391ec443f, 8bd25d6cd, 477312656, 08bf62a32, a4c0f20bf, 9b411a66d, 3d679f5a6, d15fc6b8d, 555e67ecd
Lista de verificación de migración¶
Para un porte limpio a v4.5.1, el trabajo habitual es:
Actualizar la construcción de
Image()a la nueva forma con palabras clave, dejar de usarx_size/y_sizeendisplay.write()y renombrarWINC.connect()essid→ssid(manejar las nuevas tuplas de escaneo basadas en bytes) (los cambios de constructor/display/WINC).Reescalar las llamadas a
Display.backlight()a 0–100, volver a revisar cualquier uso dex_scale/y_scalecon enteros y pasar las opciones de módulo anteriormente posicionales como palabras clave (los cambios de comportamiento).