v1.4.0

v1.4.0 es una reorganización fundamental de imlib. find_blobs() / find_markers() se reescribieron para el seguimiento directo por umbral de color, muchos métodos de imagen independientes se integraron en las tuplas de mancha y varios métodos de imagen se renombraron (subimgcopy, blitreplace, find_eyesfind_eye, compresscompressed). También añade sensor.get_fb() / conmutadores AGC / AEC y ~60 scripts de ejemplo. Esta es una versión con muchos cambios incompatibles — lee los cambios incompatibles más abajo.

Aspectos destacados

  • Seguimiento de manchas basado en colorfind_blobs() toma los umbrales de color directamente y devuelve una lista plana de tuplas de mancha.

  • Limpieza de imlibsubimg()copy(), blit()replace(), find_eyes()find_eye(), compress()compressed().

  • Sensor — se añadieron sensor.get_fb() y los conmutadores de habilitación AGC/AEC.

  • ~60 scripts de ejemplo añadidos/ampliados.

  • Incompatible: la API de manchas, los métodos de imagen eliminados y varios renombrados — consulta los cambios incompatibles.

Nuevas características

  • Sensor — se añadieron sensor.get_fb() (recuperar el framebuffer de la última captura), sensor.set_gain_ctrl(enable) (conmutar el AGC) y sensor.set_exposure_ctrl(enable) (conmutar el AEC).

  • Imagen — el subíndice de imagen (img[i]) ahora admite tanto la lectura como la escritura de píxeles (escala de grises / RGB565 / JPEG); se añadieron un image.compress() in situ y una palabra clave quality= en las funciones JPEG; find_blobs() / find_markers() / find_features() ahora devuelven una lista vacía (iterable) en lugar de un valor no-lista cuando no se encuentra nada.

  • Se añadieron ~60 scripts de ejemplo (control de placa, filtros de imagen, seguimiento de color, detección de rostros / ojos / características, escudo WiFi) y un segundo ejemplo de detección de iris.

Otros cambios y mejoras

  • image.histeq() ahora funciona con imágenes RGB565, no solo con escala de grises.

Correcciones de errores

  • Se inicializó pyb.DAC en el arranque para que el DAC funcione (#121), se corrigió un image.dilate() defectuoso, la corrupción de cero bytes de client.send() del WINC, la reiteración de la fusión de manchas, un error de reinicialización del búfer de archivos que rompía el sistema de archivos tras el primer uso, el cálculo de To_min / To_max del termopila (#113), y se aplicó un parche I2C/DMA del HAL de MicroPython del proyecto original.

Hardware y soporte de placas

  • Escudo WiFi — WINC1500 actualizado a los archivos de placa Rev-B.

  • pyb.DAC — periférico DAC habilitado.

Cambios incompatibles en la API

Rupturas de la API visibles para el usuario entre v1.3.0 y v1.4.0. Alcance: módulos C de Python en modules/ y bibliotecas de Python en scripts/libraries/.

Cada cambio está etiquetado según su impacto:

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

  • menor — API restringida; solo afecta a los scripts que la usaban.

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

find_blobs() / find_markers() reescritos (mayor)

image.find_blobs() / find_markers() se reescribieron para el seguimiento basado en color: ahora pasas los umbrales de color (y una función de filtro opcional) directamente en lugar de operar sobre una imagen presegmentada, y el resultado es una única lista plana de tuplas de mancha de 10 elementos (con un campo de código de color) en lugar de un árbol anidado por color. Reescribe los scripts de seguimiento de color para pasar los umbrales de color e iterar la lista plana.

Commits: d1ff36602, 16daeb83a

Métodos de imagen independientes eliminados (mayor)

Se eliminaron image.threshold, image.centroid(), image.orientation_radians(), image.orientation_degrees() e image.pixels(). Los datos de centroide / orientación / recuento de píxeles ahora están disponibles como campos de las tuplas de mancha que devuelve find_blobs().

Commits: 9e5d379c1

Renombrados de métodos de imlib (mayor)

Se renombraron/reescribieron varios métodos de imagen: image.subimg()image.copy(), image.blit()image.replace() e image.blend() se modificó para que coincida con las otras dos operaciones de dos imágenes. Se eliminaron los métodos image.scale() / scaled() / rainbow() (rainbow se trasladó al módulo FIR). Actualiza las llamadas a los nuevos nombres.

Commits: b534dc6ff

find_eyes() renombrado a find_eye() (menor)

image.find_eyes() se renombró a image.find_eye() y ahora devuelve una tupla de 2 elementos del iris (x, y) en lugar de la anterior tupla de ojos. Renombra la llamada y actualiza el manejo del valor de retorno.

Commits: 7a01a9bed

image.compress() renombrado a compressed() (menor)

image.compress() (que devolvía una nueva imagen JPEG) se renombró a image.compressed(); el nuevo image.compress() en su lugar comprime la imagen in situ y devuelve None. image.save() también obtuvo una palabra clave quality= y ahora devuelve None en lugar de True. Migra img.compress(q) (que espera una imagen devuelta) a img.compressed(quality=q).

Commits: 367e5fdd3

Lista de verificación de migración

Para una migración limpia a v1.4.0 el trabajo habitual es:

  1. Reescribe el código de seguimiento de color para pasar los umbrales de color a find_blobs() / find_markers() e iterar la lista plana de tuplas de mancha (la reescritura de find_blobs).

  2. Lee los datos de centroide / orientación / píxeles de las tuplas de mancha en lugar de los métodos independientes eliminados (los métodos de imagen eliminados).

  3. Renombra subimgcopy, blitreplace, corrige las llamadas a blend() y reemplaza scale / scaled / rainbow (los renombrados de imlib).

  4. Renombra find_eyes()find_eye() (el renombrado de find_eye) y compress()compressed() (el renombrado de compress).

Todos los demás scripts se ejecutan sin cambios.