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 (subimg → copy, blit → replace, find_eyes → find_eye, compress → compressed). 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 color —
find_blobs()toma los umbrales de color directamente y devuelve una lista plana de tuplas de mancha.Limpieza de imlib —
subimg()→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) ysensor.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 unimage.compress()in situ y una palabra clavequality=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.DACen el arranque para que el DAC funcione (#121), se corrigió unimage.dilate()defectuoso, la corrupción de cero bytes declient.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 deTo_min/To_maxdel 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.
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:
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).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).
Renombra
subimg→copy,blit→replace, corrige las llamadas ablend()y reemplazascale/scaled/rainbow(los renombrados de imlib).Renombra
find_eyes()→find_eye()(el renombrado de find_eye) ycompress()→compressed()(el renombrado de compress).
Todos los demás scripts se ejecutan sin cambios.