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 (subimg → copy, blit → replace, find_eyes → find_eye, compress → compressed). 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 cor —
find_blobs()recebe limiares de cor diretamente e devolve uma lista plana de tuplas de mancha.Limpeza da imlib —
subimg()→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), esensor.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 umimage.compress()no lugar e um parâmetroquality=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.DACno arranque para que o DAC funcione (#121), corrigido umimage.dilate()quebrado, a corrupção de zero bytes emclient.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 deTo_min/To_maxdo 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.
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 é:
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).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).
Renomear
subimg→copy,blit→replace, corrigir chamadas ablend(), e substituirscale/scaled/rainbow(os renomeamentos da imlib).Renomear
find_eyes()→find_eye()(o renomeamento de find_eye) ecompress()→compressed()(o renomeamento de compress).
Todos os outros scripts funcionam sem alterações.