v1.4.0

v1.4.0 é uma reorganização fundacional da imlib. find_blobs() / find_markers() foram reescritos para rastreamento direto por limiar de cor, muitos métodos de imagem autónomos foram integrados nas tuplas de mancha, e vários métodos de imagem foram renomeados (subimgcopy, blitreplace, find_eyesfind_eye, compresscompressed). Adiciona também sensor.get_fb() / toggles AGC / AEC e ~60 scripts de exemplo. Esta é uma versão com muitas quebras de compatibilidade — leia as alterações de quebra de compatibilidade abaixo.

Destaques

  • Rastreamento de manchas por corfind_blobs() recebe limiares de cor diretamente e devolve uma lista plana de tuplas de mancha.

  • Limpeza da imlibsubimg()copy(), blit()replace(), find_eyes()find_eye(), compress()compressed().

  • Sensor — adicionados sensor.get_fb() e toggles de ativação AGC/AEC.

  • ~60 scripts de exemplo adicionados/expandidos.

  • Quebra de compatibilidade: a API de manchas, métodos de imagem removidos e vários renomeamentos — consulte as alterações de quebra de compatibilidade.

Novas funcionalidades

  • Sensor — adicionados sensor.get_fb() (recuperar o framebuffer da última captura de imagem), sensor.set_gain_ctrl(enable) (alternar AGC), e sensor.set_exposure_ctrl(enable) (alternar AEC).

  • Image — o subscrito de imagem (img[i]) suporta agora leitura e escrita de pixels (escala de cinzentos / RGB565 / JPEG); adicionados um image.compress() no lugar e um parâmetro quality= nas funções JPEG; find_blobs() / find_markers() / find_features() devolvem agora uma lista vazia (iterável) em vez de um não-lista quando nada é encontrado.

  • Adicionados ~60 scripts de exemplo (controlo de placa, filtros de imagem, rastreamento por cor, deteção de face / olho / características, shield WiFi) e um segundo exemplo de deteção de íris.

Outras alterações e melhorias

  • image.histeq() funciona agora em imagens RGB565, não apenas em escala de cinzentos.

Correções de erros

  • Inicializado pyb.DAC no arranque para que o DAC funcione (#121), corrigido um image.dilate() quebrado, a corrupção de zero bytes em client.send() do WINC, re-iteração na fusão de manchas, um erro de reinicialização do buffer de ficheiros que quebrava o sistema de ficheiros após o primeiro uso, o cálculo de To_min / To_max do termopilha (#113), e aplicado um patch I2C/DMA HAL do MicroPython upstream.

Hardware e suporte a placas

  • Shield WiFi — WINC1500 atualizado para ficheiros de placa Rev-B.

  • pyb.DAC — periférico DAC ativado.

Alterações de quebra de compatibilidade da API

Alterações de API visíveis pelo utilizador entre v1.3.0 e v1.4.0. Âmbito: módulos C em Python em modules/ e bibliotecas Python em scripts/libraries/.

Cada alteração está marcada com o seu impacto:

  • major — afeta a maioria dos scripts que utilizavam a funcionalidade; será necessário portar o código.

  • minor — API restrita; afeta apenas os scripts que a utilizavam.

As alterações estão agrupadas por impacto nessa ordem. Se pretende apenas portar o seu código, aceda ao guia de migração no final. Cada hash de commit é uma ligação para o respetivo diff no GitHub.

find_blobs() / find_markers() reescritos (major)

image.find_blobs() / find_markers() foram reescritos para rastreamento por cor: passa-se agora limiares de cor (e uma função de filtro opcional) diretamente em vez de operar numa imagem pré-segmentada, e o resultado é uma única lista plana de tuplas de mancha com 10 elementos (com um campo de código de cor) em vez de uma árvore aninhada por cor. Retrabalhe os scripts de rastreamento por cor para passar limiares de cor e iterar a lista plana.

Commits: d1ff36602, 16daeb83a

Métodos de imagem autónomos removidos (major)

image.threshold, image.centroid(), image.orientation_radians(), image.orientation_degrees(), e image.pixels() foram removidos. Os dados de centroide / orientação / contagem de pixels estão agora disponíveis como campos das tuplas de mancha devolvidas por find_blobs().

Commits: 9e5d379c1

Renomeamentos de métodos da imlib (major)

Vários métodos de imagem foram renomeados/reformulados: image.subimg()image.copy(), image.blit()image.replace(), e image.blend() foi alterado para corresponder às outras operações de duas imagens. Os métodos image.scale() / scaled() / rainbow() foram removidos (rainbow movido para o módulo FIR). Atualize as chamadas para os novos nomes.

Commits: b534dc6ff

find_eyes() renomeado para find_eye() (minor)

image.find_eyes() foi renomeado para image.find_eye() e devolve agora uma 2-tupla de íris (x, y) em vez da tupla de olhos anterior. Renomeie a chamada e atualize o tratamento do valor de retorno.

Commits: 7a01a9bed

image.compress() renomeado para compressed() (minor)

image.compress() (que devolvia uma nova imagem JPEG) foi renomeado para image.compressed(); o novo image.compress() comprime a imagem no lugar e devolve None. image.save() ganhou também um parâmetro quality= e devolve agora None em vez de True. Migre img.compress(q) (que esperava uma imagem devolvida) para img.compressed(quality=q).

Commits: 367e5fdd3

Guia de migração

Para uma migração limpa para v1.4.0, o trabalho típico é:

  1. Retrabalhar o código de rastreamento por cor para passar limiares de cor para find_blobs() / find_markers() e iterar a lista plana de tuplas de mancha (a reescrita de find_blobs).

  2. Ler os dados de centroide / orientação / pixel das tuplas de mancha em vez dos métodos autónomos removidos (os métodos de imagem removidos).

  3. Renomear subimgcopy, blitreplace, corrigir chamadas a blend(), e substituir scale / scaled / rainbow (os renomeamentos da imlib).

  4. Renomear find_eyes()find_eye() (o renomeamento de find_eye) e compress()compressed() (o renomeamento de compress).

Todos os outros scripts funcionam sem alterações.