v3.6.0

v3.6.0 trae compatibilidad completa con la cámara OV5640 de 5 MP con nuevos tamaños de fotograma de alta resolución (HD / FHD / QHD / QXGA / WQXGA), actualiza el núcleo a MicroPython 1.12, optimiza intensamente el codificador JPEG por software y la detección de AprilTag / líneas, añade UVC (vídeo USB) en el OpenMV Cam H7 Plus, y admite memoria flash QSPI de hasta 32 MB. El comportamiento de MicroPython y get_histogram() cambiaron — lee los cambios incompatibles a continuación.

Aspectos destacados

  • OV5640 de 5 MP — controlador completo de cámara con nuevos tamaños de fotograma HD / FHD / QHD / QXGA / WQXGA / WQXGA2.

  • MicroPython 1.12 — se actualizó el núcleo incluido.

  • Pipeline más rápido — codificación JPEG por software, detección de AprilTag, detección de líneas LSD, histeq() y decodificación de códigos QR fuertemente optimizadas.

  • UVC en el H7 Plus — el OpenMV Cam H7 Plus puede actuar como dispositivo de vídeo USB.

  • Incompatible: el comportamiento de MicroPython, la normalización de image.get_histogram() y la salida JPEG/escala de grises del OpenMV 3 cambiaron — consulta los cambios incompatibles.

Nuevas características

  • OV5640 — se añadió compatibilidad completa con la cámara OV5640 de 5 MP (configuración del reloj externo en la inicialización del sensor) y las nuevas constantes de tamaño de fotograma sensor.HD / FHD / QHD / QXGA / WQXGA / WQXGA2.

  • TIM4 — se liberó para que pueda usarse desde MicroPython.

  • Se añadió un ejemplo de escritura temporizada de DAC (dac_write_timed.py) y se renombró dac_control.py a dac_write.py.

Otros cambios y mejoras

  • Se actualizó el MicroPython incluido a 1.12; se optimizó intensamente el codificador JPEG por software (ruta VGA, rutas de escala de grises/binaria, aritmética con enteros en lugar de coma flotante, captura optimizada de MCU), find_line_segments() de LSD, la detección de AprilTag, Image.histeq() y la conversión de códigos QR / RGB a gris; se añadió compatibilidad con memoria flash QSPI para chips de hasta 32 MB; se eliminó el ejemplo obsoleto cnn.py de CMSIS-CNN.

Corrección de errores

Cámara e imagen:

  • Se corrigió la corrupción de la codificación JPEG a HQQQVGA, la compresión de imagen binaria (1 bit) → JPEG, una regresión de find_line_segments() (se reactivó la comprobación no alineada NOTDEF) y problemas menores del controlador OV2640.

Sistema y arranque:

  • Se corrigió la corrupción de la autoprueba / sistema de archivos (selftest.py ahora se ejecuta antes de que se habilite USB MSC, y USB MSC se habilita ante un error fatal para que el host pueda leer el registro de errores), el write_timed() de pyb.DAC, las temporizaciones de machine.I2C del H7, la reactivación del overdrive del F7 tras el modo de parada, y el intervalo de rtc.wakeup() de stop_mode.py.

Compatibilidad con hardware y placas

  • OV5640 — controlador completo de cámara de 5 MP con tamaños de fotograma de alta resolución.

  • OpenMV Cam H7 Plus — compatibilidad con UVC (vídeo USB); el destino de placa OPENMV4R se renombró a OPENMV4P.

  • Memoria flash QSPI — ahora se admiten chips de hasta 32 MB.

Cambios incompatibles en la API

Cambios incompatibles en la API visibles para el usuario entre v3.5.2 y v3.6.0. Alcance: los módulos C de Python en modules/ y las bibliotecas de Python en scripts/libraries/.

Los tres cambios incompatibles son cambios de comportamiento (misma API, resultados distintos) — vuelve a revisar los scripts afectados. Cada hash de commit enlaza con su diff en GitHub.

MicroPython actualizado a 1.12 (comportamiento)

El núcleo de MicroPython incluido se actualizó a 1.12. El comportamiento de la biblioteca estándar y del lenguaje sigue al de MicroPython 1.12 oficial; vuelve a revisar los scripts que dependan del comportamiento de micropython / módulos estándar específico de la versión.

Commits: eafd431ea

La normalización del umbral de image.get_histogram() cambió (comportamiento)

image.get_histogram() (y get_statistics()) con umbrales de color ahora normaliza por el número de píxeles umbralizados en lugar de por la ROI completa, y usa el redondeo hacia abajo en lugar del redondeo al más cercano para indexar los bins. Los valores de histograma/estadísticas para las llamadas umbralizadas difieren de las versiones anteriores — vuelve a ajustar el código que comparaba con valores absolutos de histograma.

Commits: 7cf0f8089

La salida JPEG/escala de grises del OpenMV 3 cambió (comportamiento)

Para ahorrar memoria flash, se deshabilitó la tabla de búsqueda YUV del OpenMV 3 (M7), por lo que los valores de píxel de la salida JPEG y en escala de grises se calculan de forma ligeramente distinta en el OpenMV 3. La salida sigue siendo válida pero difiere marginalmente de las versiones anteriores; vuelve a revisar las comparaciones exactas de píxeles en el OpenMV 3.

Commits: 0e4b46e41

Lista de verificación de migración

Vuelve a validar contra 1.12 los scripts que dependan del comportamiento de MicroPython específico de la versión (la actualización de MicroPython), vuelve a ajustar el código que comparaba con valores absolutos de get_histogram() / get_statistics() al usar umbrales de color (el cambio del histograma), y vuelve a revisar las comparaciones exactas de píxeles en el OpenMV 3 (el cambio de salida del OpenMV 3). Todos los demás scripts funcionan sin cambios.