v2.8.0#
v2.8.0 es una versión enorme. Pone en marcha la OpenMV Cam H7 (STM32H7) con un codificador JPEG por hardware y ADC/DAC del H7, una enorme renovación de la API de image (grosor/relleno de dibujo, operaciones matemáticas/binarias, muchos filtros nuevos, umbralización de Otsu), hilos de MicroPython y el módulo de versión omv. Se fijó el orden de análisis de argumentos de Python y se eliminó image.mask_ellipse() — lee los cambios incompatibles a continuación.
Destacados#
OpenMV Cam H7 — nueva placa STM32H7 con un codificador JPEG por hardware y ADC / DAC del H7.
Renovación de
image— grosor de línea, rellenos de formas,draw_arrow()/draw_image(), operaciones matemáticas/binarias completas y muchos filtros nuevos.Umbralización de Otsu —
histogram.get_threshold()y un objetoThreshold.Hilos — soporte de
_threadde MicroPython.Módulo
omv— información de versión / placa.Incompatible: el orden de los argumentos posicionales de Python ahora es estricto y se eliminó
image.mask_ellipse()— consulta los cambios incompatibles.
Nuevas funciones#
OpenMV Cam H7 — soporte para la placa STM32H7 con un codificador JPEG por hardware, ADC del H7 y DAC del H7.
Dibujo — se añadieron el
thicknessde línea, elfillde formas (rectángulo / círculo), elscale/ kerning de texto, una palabra clavemono_spaceendraw_string(),image.draw_arrow()yimage.draw_image()(dibujo de sprites / máscaras).Operaciones matemáticas — se añadieron
add(),sub(),mul(),div(),min(),max(),difference(),blend(),replace()(conhmirror/vflip/mask) yremove_shadows(); las operaciones básicas ahora aceptan un valor escalar/de color aplicado a todos los píxeles.Binario / morfología — un nuevo tipo de imagen binaria y
binary(); las operaciones de línea yerode()/dilate()aceptan máscaras; se añadieronopen()/close()/top_hat()/black_hat().Filtros — se añadieron
cartoon,flood_fill,bilateral,laplacian, los aliasblur/gaussian_blury la ecualización de histograma adaptativa (histeq(adaptive=, clip_limit=, mask=)).Estadísticas —
get_statistics()/get_histogram()aceptan una lista de umbrales de color einvert; se añadieron elhistogram.get_threshold()de Otsu y un objetoThreshold.CMSIS CNN — se añadió
image.classify_object()con un ejemplocnn.py(reemplazado por el módulonnen la v3.0.0).Hilos — se habilitó el módulo
_threadde MicroPython.Módulo
omv— se añadió información de versión (version_string,arch,board_type,board_id); se habilitaron el bus I2C4 demachiney las funciones especiales matemáticas (erf,gamma, …); se añadieron ejemplos de motor-shield y muchos scripts de ejemplo nuevos.
Otros cambios y mejoras#
El reloj externo del sensor del H7 se redujo a 48 MHz (mejor calidad de imagen, menor FPS); la calidad JPEG baja/alta ahora es configurable por placa (y ajustada para el H7); se añadió un gating de funciones
imlib_config.hpor placa (todas las funciones de imagen permanecen habilitadas en el firmware de fábrica); se actualizó el MicroPython incluido.
Correcciones de errores#
Procesamiento de imágenes:
Se corrigieron
image.save()sin extensión de archivo, el mapeo degain_db/gain_db_ceilingpara el OV2640 / OV7725 / OV9650 / MT9V034, la ganancia excesiva ensharpen(), el ruido en los bordes morfológicos, una división por cero en una operación de imagen y un fallo por desbordamiento de pila con un tamaño de kernel de filtro demasiado grande (ahora un error limpio).
Sistema:
Se protegió el búfer USB VCP con una sección atómica (corrupción serie, #313), se corrigieron la conectividad USB en Windows, el montaje del sistema de archivos de la memoria flash interna si falla la tarjeta SD, el valor PLLP de
set_frequency()decpufreqy un error de flasheo de firmware del gestor de arranque (bootloader).
Hardware y soporte de placas#
OpenMV Cam H7 (STM32H7) — nueva placa con un codificador JPEG por hardware y ADC / DAC del H7.
machine— se habilitó el bus I2C4.
Cambios incompatibles en la API#
Rupturas de la API visibles para el usuario entre v2.7.0 y v2.8.0. Alcance: módulos C de Python en modules/ y bibliotecas de Python en scripts/libraries/.
Ambos cambios incompatibles son minor y solo afectan a los scripts que usaban la función relevante. Cada hash de commit enlaza a su diff en GitHub.
El orden de los argumentos posicionales de Python ahora es estricto (minor)#
El análisis de argumentos en los módulos C de Python (image / sensor / fir / gif / lcd / mjpeg) ahora lee los argumentos posicionales antes que las palabras clave y fija el orden posicional. Combinado con las nuevas palabras clave en los métodos de dibujo (draw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints() que ganaron thickness / fill / scale / size), el código que pasaba parámetros fuera de orden de forma posicional — o que pasaba un color posicional después de uno de los nuevos argumentos — debe usar argumentos por palabra clave o el orden posicional documentado.
image.mask_ellipse() eliminado (minor)#
Se eliminó image.mask_ellipse(). Los scripts que lo llamaban deben eliminar la llamada o usar una ROI / imagen de máscara explícita en su lugar.
Commits: d7159fba3
Lista de comprobación de migración#
Pasa los argumentos por palabra clave (o en el orden posicional documentado), especialmente color en los métodos de dibujo (el cambio de orden de argumentos), y elimina las llamadas a image.mask_ellipse() (la eliminación de mask_ellipse). Todos los demás scripts se ejecutan sin cambios.