v1.1.0

v1.1.0 es la versión que sienta las bases de la arquitectura: descarta los primeros módulos de periféricos personalizados en favor de los componentes integrados de MicroPython estándar, traslada la API de imagen al módulo image y el reloj de velocidad de fotogramas a time, y añade cascadas de Haar integradas, get_pixel() / set_pixel(), compatibilidad con la placa OpenMV 2 y depuración por USB-CDC. Es una versión con muchos cambios importantes que define la API — lee a continuación los cambios importantes.

Aspectos destacados

  • Componentes integrados de MicroPython — los módulos personalizados gpio / led / spi / socket / wlan / uart / file / select se eliminaron en favor de los pyb / machine de MicroPython.

  • módulo imageImage() / HaarCascade() / los descriptores ahora están en el módulo image.

  • time.clock — el reloj de velocidad de fotogramas se trasladó al módulo time.

  • Cascadas de Haar integradasHaarCascade("frontalface") / HaarCascade("eye") (no se necesita ningún archivo).

  • Compatibilidad con la placa OpenMV 2 y depuración por USB-CDC.

  • Cambio importante: se redefinió la estructura de módulos — consulta los cambios importantes.

Nuevas características

  • Image — se añadieron Image.get_pixel(x, y) / set_pixel() y el acceso a píxeles por subíndice img[i]; cascadas de Haar integradas en memoria flash (HaarCascade("frontalface") / HaarCascade("eye")) y una palabra clave stages= para limitar las etapas de la cascada; draw_string() funciona en imágenes en escala de grises.

  • Sensor — se añadieron sensor.set_colorbar(), sensor.set_saturation() y el tamaño de fotograma QQVGA2.

  • mlxmlx.read(type) con salida mlx.RAINBOW / mlx.GRAYSCALE.

  • Depuración — se implementó la depuración por USB CDC, una consulta de firmware fw_version(), firmware específico por placa (OpenMV 1 / OpenMV 2) y scripts de autocomprobación / barra de colores; los errores fatales/de análisis se registran en memoria flash.

Otros cambios y mejoras

  • La falta de memoria ahora lanza MemoryError en lugar de OSError; los scripts se ejecutan relanzando las excepciones, de modo que los errores se imprimen en lugar de bloquearse; la velocidad en baudios del puerto serie es configurable (predeterminada 921600); un sistema de archivos en memoria flash más grande; el reloj de píxeles del sensor se redujo a 54 MHz para una captura estable; sensor.reset() se basa únicamente en un reinicio por software del sensor.

Correcciones de errores

  • Se corrigieron la coincidencia de plantillas, find_features() repitiendo el primer objeto, el acceso atómico a registros SCCB/I2C, la detección de chip de la tarjeta SD, el mapeo de pines de I2C por software, la precisión de fast_cbrtf / color LAB, y el uso de memoria de la imagen integral / filtro de mediana en la OpenMV 1 / 2.

Compatibilidad de hardware y placas

  • Compatibilidad con la placa OpenMV 2 (STM32F427) (y el diseño de hardware de la OpenMV 3); se usa MCO como reloj del sensor en la OpenMV 2.

Cambios importantes en la API

Cambios en la API visibles para el usuario entre v1.0.3-beta y v1.1.0. Alcance: módulos C de Python en modules/ y bibliotecas de Python en scripts/libraries/.

Cada cambio está etiquetado con su impacto:

  • mayor — afecta a la mayoría de los scripts que usaban la característica; tendrás que adaptar el código.

  • comportamiento — misma API, resultados diferentes; vuelve a revisar los scripts ajustados.

Los cambios se agrupan por impacto en ese orden. Si solo quieres adaptar tu código, salta a la lista de comprobación de migración al final. Cada hash de commit enlaza con su diff en GitHub.

Módulos de periféricos personalizados eliminados (mayor)

Los primeros módulos personalizados clock / file / gpio / led / select / socket / spi / wlan / uart se eliminaron en favor de los periféricos integrados pyb / machine de MicroPython. Adapta los scripts a los equivalentes estándar de MicroPython (p. ej. pyb.Pin / pyb.LED / pyb.SPI / pyb.UART).

Commits: 6d2fafa94

La API de imagen se trasladó al módulo image (mayor)

Image(), HaarCascade() y las funciones de guardado/carga de descriptores ya no son componentes integrados sin más — ahora residen en el nuevo módulo image. Los scripts deben usar import image y image.Image / image.HaarCascade().

Commits: 54288c535

El reloj de velocidad de fotogramas se trasladó a time (mayor)

El módulo independiente clock se eliminó; el reloj de velocidad de fotogramas ahora reside en time. Usa import time y clock = time.clock() — el objeto devuelto sigue proporcionando .tick() / .fps() / .avg() / .reset().

Commits: a8928ca3b

/flash y /sd ya no se añaden a sys.path (comportamiento)

Las etiquetas de volumen / el directorio raíz se fijaron y /flash y /sd ya no se añaden automáticamente a sys.path. Los scripts que importaban módulos auxiliares por nombre directo desde esas ubicaciones deben añadir la ruta explícitamente (o colocar los módulos donde se puedan encontrar).

Commits: 09e77b5da

Lista de comprobación de migración

Para una adaptación limpia a v1.1.0 el trabajo habitual es:

  1. Reemplazar los módulos personalizados gpio / led / spi / uart / socket / wlan / file / select por los pyb / machine de MicroPython (la eliminación de módulos personalizados).

  2. Usar import image y anteponer image. a Image() / HaarCascade() (el traslado del módulo image).

  3. Usar import time y clock = time.clock() (el traslado del reloj).

  4. Añadir /flash / /sd a sys.path explícitamente si importabas módulos auxiliares por nombre directo (el cambio de sys.path).

Todos los demás scripts se ejecutan sin cambios.