v2.8.0¶
A v2.8.0 é uma versão enorme. Ela coloca em funcionamento a OpenMV Cam H7 (STM32H7) com um codificador JPEG por hardware e ADC/DAC do H7, uma enorme reformulação da API do image (espessura/preenchimento de desenho, operações matemáticas/binárias, muitos novos filtros, limiarização de Otsu), threading do MicroPython e o módulo de versão omv. A ordem de parsing de argumentos do Python foi fixada e image.mask_ellipse() foi removido — leia as mudanças incompatíveis abaixo.
Destaques¶
OpenMV Cam H7 — nova placa STM32H7 com um codificador JPEG por hardware e ADC / DAC do H7.
Reformulação do
image— espessura de linha, preenchimento de formas,draw_arrow()/draw_image(), operações matemáticas/binárias completas e muitos novos filtros.Limiarização de Otsu —
histogram.get_threshold()e um objetoThreshold.Threading — suporte ao
_threaddo MicroPython.Módulo
omv— informações de versão / placa.Incompatível: a ordem de argumentos posicionais do Python agora é estrita e
image.mask_ellipse()foi removido — veja as mudanças incompatíveis.
Novos recursos¶
OpenMV Cam H7 — suporte à placa STM32H7 com um codificador JPEG por hardware, ADC do H7 e DAC do H7.
Desenho — adicionados
thicknessde linha,fillde formas (retângulo / círculo),scale/ kerning de texto, uma palavra-chavemono_spaceemdraw_string(),image.draw_arrow()eimage.draw_image()(desenho de sprite / máscara).Operações matemáticas — adicionados
add(),sub(),mul(),div(),min(),max(),difference(),blend(),replace()(comhmirror/vflip/mask) eremove_shadows(); as operações básicas agora aceitam um valor escalar/de cor aplicado a todos os pixels.Binário / morfologia — um novo tipo de imagem binária e
binary(); as operações de linha eerode()/dilate()aceitam máscaras; adicionadosopen()/close()/top_hat()/black_hat().Filtros — adicionados
cartoon,flood_fill,bilateral,laplacian, os aliasesblur/gaussian_blure equalização adaptativa de histograma (histeq(adaptive=, clip_limit=, mask=)).Estatísticas —
get_statistics()/get_histogram()aceitam uma lista de limiares de cor einvert; adicionados a limiarização de Otsuhistogram.get_threshold()e um objetoThreshold.CMSIS CNN — adicionado
image.classify_object()com um exemplocnn.py(substituído pelo módulonnna v3.0.0).Threading — habilitado o módulo
_threaddo MicroPython.Módulo
omv— adicionadas informações de versão (version_string,arch,board_type,board_id); habilitados o barramento I2C4 domachinee funções matemáticas especiais (erf,gamma, …); adicionados exemplos de motor-shield e muitos novos scripts de exemplo.
Outras mudanças e melhorias¶
O clock externo do sensor no H7 foi reduzido para 48 MHz (melhor qualidade de imagem, menor FPS); a qualidade JPEG baixa/alta agora é configurável por placa (e ajustada para o H7); adicionado gating de recursos por placa via
imlib_config.h(todas as funções de imagem permanecem habilitadas no firmware de fábrica); atualizado o MicroPython incluído.
Correções de bugs¶
Imagem:
Corrigiu
image.save()sem extensão de arquivo, o mapeamento degain_db/gain_db_ceilingpara o OV2640 / OV7725 / OV9650 / MT9V034, ganho excessivo emsharpen(), ruído de borda morfológico, uma divisão por zero em uma operação de imagem e um crash por stack-smash em um tamanho de kernel de filtro grande demais (agora um erro limpo).
Sistema:
Protegeu o buffer VCP do USB com uma seção atômica (corrupção serial, #313), corrigiu a conectividade USB no Windows, a montagem do sistema de arquivos do flash interno caso o cartão SD falhe, o valor PLLP do
set_frequency()docpufreqe um bug de gravação de firmware do bootloader.
Hardware e suporte a placas¶
OpenMV Cam H7 (STM32H7) — nova placa com um codificador JPEG por hardware e ADC / DAC do H7.
machine— habilitado o barramento I2C4.
Mudanças incompatíveis de API¶
Quebras de API visíveis ao usuário entre a v2.7.0 e a v2.8.0. Escopo: módulos C de Python em modules/ e bibliotecas Python em scripts/libraries/.
Ambas as mudanças incompatíveis são minor e afetam apenas scripts que usavam o recurso relevante. Cada hash de commit aponta para seu diff no GitHub.
A ordem de argumentos posicionais do Python agora é estrita (minor)¶
O parsing de argumentos nos módulos C de Python (image / sensor / fir / gif / lcd / mjpeg) agora lê os argumentos posicionais antes das palavras-chave e fixa a ordem posicional. Combinado com os novos argumentos por palavra-chave nos métodos de desenho (draw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints() ganhando thickness / fill / scale / size), o código que passava parâmetros fora de ordem posicionalmente — ou que passava uma color posicional depois de um dos novos argumentos — deve usar argumentos por palavra-chave ou a ordem posicional documentada.
image.mask_ellipse() removido (minor)¶
image.mask_ellipse() foi removido. Scripts que o chamavam devem remover a chamada ou usar uma ROI / imagem de máscara explícita em vez disso.
Commits: d7159fba3
Lista de verificação de migração¶
Passe os argumentos por palavra-chave (ou na ordem posicional documentada), especialmente color nos métodos de desenho (a mudança de ordem de argumentos), e remova as chamadas de image.mask_ellipse() (a remoção de mask_ellipse). Todos os outros scripts rodam sem alterações.