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 LSD —
find_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 ejemplorotation_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 bruto —
image.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.pyparaimage.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.pypara la nueva API de LSD (corrección de lente desactivada por defecto); se actualizó la APIopenmvdel 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), queblob.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.pypara 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).
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:
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).Reemplazar las constantes de framesize eliminadas por una resolución compatible (la eliminación de framesizes).
Mover la detección de códigos QR de la M4 a una placa M7 (el cambio de find_qrcodes).
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.