v2.6.0

v2.6.0 actualiza el núcleo a MicroPython 1.9.2, cambia find_line_segments() al algoritmo LSD, añade compatibilidad con el sensor de obturador global MT9V034, la corrección de perspectiva image.rotation_corr(), sensor.sleep(), el guardado de imágenes en bruto y los cimientos para la placa OpenMV 4. find_line_segments(), varios framesizes y el comportamiento de MicroPython cambiaron — lee los cambios incompatibles a continuación.

Destacados

  • Actualización del núcleo a MicroPython 1.9.2.

  • Segmentos de línea LSDfind_line_segments() ahora usa el algoritmo Line Segment Detector.

  • Compatibilidad con el sensor de obturador global MT9V034.

  • image.rotation_corr() — corrección de rotación de perspectiva en X/Y/Z.

  • sensor.sleep() modo de suspensión suave y guardado de imágenes en bruto (sin comprimir).

  • Incompatible: los parámetros de find_line_segments(), varias constantes de framesize y el comportamiento de MicroPython cambiaron — consulta los cambios incompatibles.

Nuevas funciones

  • image.rotation_corr() — se añadió la corrección de rotación de perspectiva en X/Y/Z con un ejemplo rotation_correction.py.

  • sensor.sleep(enable) — pone la cámara en un modo de suspensión suave (con un ejemplo de modo de suspensión).

  • Imágenes en brutoimage.save() ahora puede escribir imágenes en bruto (sin comprimir).

  • MT9V034 — se añadió compatibilidad con el sensor de obturador global, exponiendo la constante sensor.MT9V034.

  • Se añadió un ejemplo lens_correction.py para image.lens_corr() y archivos de soporte para la placa OpenMV 4 (cimientos de configuración de placa / gestor de arranque (bootloader) / enlazador).

Otros cambios y mejoras

  • Se actualizó el MicroPython incluido a la 1.9.2 (plumbing del port 1.9, oofatfs); se reescribió find_line_segments.py para la nueva API de LSD (corrección de lente desactivada por defecto); se actualizó la API openmv del lado del host (init(portname) / exec_script / stop_script); se redujo el reloj del sensor de la OpenMV Cam M4 (menor FPS máximo en la M4); el botón Stop del IDE ahora usa una excepción forzada para interrumpir los scripts de forma más fiable.

Correcciones de errores

  • Se corrigió que image.lens_corr() dejara píxeles obsoletos (el búfer de destino ahora se limpia antes de remapear), que blob.density() usara división entera (siempre devolvía 0, #268), el mapeo de pines UART de la OpenMV 2 (M4), y se actualizó qrcodes_with_lens_corr.py para usar QVGA.

Hardware y soporte de placas

  • Sensor de obturador global MT9V034.

  • OpenMV 4 — archivos de soporte de placa (cimientos).

  • OpenMV 2 (M4) — corrección del mapeo de pines UART.

Cambios incompatibles en la API

Rupturas de la API visibles para el usuario entre v2.5.0 y v2.6.0. Alcance: módulos C de Python en modules/ y bibliotecas de Python en scripts/libraries/.

Cada cambio está etiquetado según su impacto:

  • major — afecta a la mayoría de los scripts que usaban la función; tendrás que portar el código.

  • minor — API limitada; solo afecta a los scripts que la usaban.

  • behavior — misma API, resultados distintos; revisa de nuevo 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.

find_line_segments() cambió a LSD (major)

image.find_line_segments() se reescribió para usar el algoritmo Line Segment Detector (LSD). Los antiguos parámetros threshold / theta_margin / rho_margin / segment_threshold / x_stride / y_stride se reemplazaron por merge_distance y max_theta_diff (p. ej. find_line_segments(merge_distance=0, max_theta_diff=15)). Tampoco está ya disponible en las placas de clase M4 (OpenMV 2).

Commits: 5a3153c8b, cbe2a4aeb

Constantes de framesize no válidas eliminadas (minor)

Se eliminaron las constantes de framesize no válidas sensor.QQQQCIF / QQQCIF / QQQQSIF / QQQSIF / HQQQQVGA / HVGA (#261). Los scripts que las usen deben cambiar a una resolución compatible.

Commits: 35ab0a26f

find_qrcodes() eliminado en la OpenMV Cam M4 (minor)

image.find_qrcodes() ya no se compila en las placas de clase M4 (OpenMV 2). Usa una placa OpenMV 3 (M7) u otra función del código para la detección de QR en hardware M4. Las demás placas no se ven afectadas.

Commits: 7dff089e6

MicroPython actualizado a la 1.9.2 (behavior)

El núcleo de MicroPython incluido se actualizó a la 1.9.2. El comportamiento de la biblioteca estándar y del lenguaje sigue al de MicroPython 1.9.2 upstream — revisa de nuevo los scripts que dependan de comportamientos específicos de la versión. En particular, un slice de imagen con un paso distinto de 1 ahora lanza OSError en lugar de NotImplementedError.

Commits: 11bed4b99

Lista de comprobación de migración

Para un port limpio a la v2.6.0 el trabajo habitual es:

  1. Reescribir las llamadas a find_line_segments() para los parámetros de LSD (merge_distance / max_theta_diff) y mover ese procesamiento fuera de la M4 (la reescritura de LSD).

  2. Reemplazar las constantes de framesize eliminadas por una resolución compatible (la eliminación de framesizes).

  3. Mover la detección de códigos QR de la M4 a una placa M7 (el cambio de find_qrcodes).

  4. Volver a validar el comportamiento específico de la versión frente a MicroPython 1.9.2 (la actualización de MicroPython).

Todos los demás scripts se ejecutan sin cambios.