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.