v2.5.0¶
v2.5.0 es una versión de imagen rica en funcionalidades: añade find_rects(), find_circles(), get_regression() (ajuste de líneas/regresión), find_number() (dígitos con LeNet), las clases de flujo ImageWriter / ImageReader, sensor.flush() / width() / height() y compatibilidad con pyb.RTC. La carga de imágenes ahora se respalda en el framebuffer: lee los cambios que rompen la compatibilidad más abajo.
Aspectos destacados¶
image.find_rects()— detector de rectángulos / cuadriláteros con salida de esquinas.image.find_circles()— detección de círculos por Hough.image.get_regression()— ajuste de líneas por mínimos cuadrados y robusto (Theil-Sen).image.find_number()— reconocimiento de dígitos con LeNet.ImageWriter/ImageReader— graba y reproduce flujos de imágenes.Compatibilidad con
pyb.RTC, además desensor.flush()/sensor.width()/sensor.height().Cambio que rompe la compatibilidad: la carga de imágenes ahora se respalda en el framebuffer y lanza un error si la imagen es demasiado grande; consulta los cambios que rompen la compatibilidad.
Nuevas funcionalidades¶
Detección de características — se añadieron
image.find_rects()(detector de cuadriláteros de AprilTag; objetos rect conx/y/w/h/corners/magnitude),image.find_circles()(Hough),image.get_regression()(ajuste de líneas por mínimos cuadrados + robusto Theil-Sen) eimage.find_number()(reconocimiento de dígitos con LeNet), cada uno con scripts de ejemplo.Esquinas de resultado — se añadió un atributo
cornersa los objetos de resultado de código QR / AprilTag / matriz de datos / código de barras.Flujos de imágenes — se añadieron las clases
image.ImageWriter/image.ImageReader(formato de fragmentos alineados a 16 bytes) con los ejemplosimage_writer.py/image_reader.py.Sensor — se añadieron
sensor.flush()(envía el framebuffer al IDE sin una captura) ysensor.width()/sensor.height().pyb.RTC— se habilitó la compatibilidad con RTC con un ejemplortc.py.Se añadieron una cascada de Haar de cara de gato y un ejemplo de Servo-Shield (PCA9685); la herramienta de host
openmv-cascade.pyganó compatibilidad con el nuevo formato de cascada XML de OpenCV.
Otros cambios y mejoras¶
El framebuffer se refactorizó para que los métodos de imagen
copy_to_fbactualicen la vista previa del IDE; las rutas deHaarCascade()ya no requieren una/inicial (se detecta automáticamente si es incorporada o un archivo); la grabación GIF/MJPEG ahora admite VGA (y GIFs BAYER); se actualizó elREADME.txtincorporado y el archivo de controladoropenmv.infya no se crea en un sistema de archivos nuevo.
Correcciones de errores¶
Imagen:
Se corrigieron la acumulación de votos de
find_circles(), el desplazamiento rho deget_regression()con una ROI y una fuga de memoria, la fusión de segmentos defind_lines(), el promediado de ángulos defind_blobs()y los límites de color predeterminados (menos restrictivos), la estabilidad de ordenación de puntos clave de ORB / el orden de los descriptores y la bandera de coincidencia, y la carga con búfer de la cascada de Haar (lecturas no alineadas).
Sistema:
Se habilitó el Servo 3 (P9) de
pyb(#256), se corrigió la init del RTC, se aumentó el tiempo de espera de caracteres del UART (#240) y se corrigió la bandera «enabled» no inicializada del framebuffer del sensor.
Hardware y compatibilidad de placas¶
Cambios de API que rompen la compatibilidad¶
Rupturas de API visibles para el usuario entre v2.4.1 y v2.5.0. Alcance: módulos C de Python en modules/ y bibliotecas de Python en scripts/libraries/.
El cambio que rompe la compatibilidad es un cambio de comportamiento (misma API, resultado diferente): vuelve a revisar los scripts afectados. Cada hash de commit enlaza a su diff en GitHub.
La carga de imágenes se respalda en el framebuffer (comportamiento)¶
image.Image / la carga de imágenes ahora copia la imagen cargada en el framebuffer principal y lanza una excepción si la imagen es demasiado grande para caber. Las cargas que antes tenían éxito en un búfer del heap ahora pueden fallar: asegúrate de que las imágenes cargadas quepan en el framebuffer (o maneja el nuevo error).
Commits: 87d53385a
Lista de verificación de migración¶
Asegúrate de que las imágenes cargadas quepan en el framebuffer (o captura el nuevo error de «imagen demasiado grande») allí donde antes dependías de cargas de imágenes respaldadas en el heap (el cambio de carga de imágenes). Todos los demás scripts se ejecutan sin cambios.