v2.8.0¶
A versão v2.8.0 é uma atualização de grande envergadura. Introduz a OpenMV Cam H7 (STM32H7) com um codificador JPEG por hardware e ADC/DAC do H7, uma revisão profunda da API image (espessura de desenho/preenchimentos, operações matemáticas/binárias, muitos novos filtros, limiarização de Otsu), suporte a threads no MicroPython, e o módulo de versão omv. A ordem de análise de argumentos em Python foi fixada e image.mask_ellipse() foi removido — consulte as alterações que quebram compatibilidade abaixo.
Destaques¶
OpenMV Cam H7 — nova placa STM32H7 com codificador JPEG por hardware e ADC / DAC do H7.
Revisão da
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.Threads — suporte ao módulo
_threaddo MicroPython.Módulo
omv— informação de versão / placa.Alteração que quebra compatibilidade: a ordem dos argumentos posicionais em Python é agora estrita e
image.mask_ellipse()foi removido — consulte as alterações que quebram compatibilidade.
Novas funcionalidades¶
OpenMV Cam H7 — suporte à placa STM32H7 com codificador JPEG por hardware, ADC do H7 e DAC do H7.
Desenho — adicionada espessura
thicknessde linha,fillde formas (retângulo / círculo),scale/ kerning de texto, palavra-chavemono_spaceemdraw_string(),image.draw_arrow(), eimage.draw_image()(desenho de sprites / 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 aceitam agora um valor escalar/cor aplicado a todos os pixels.Binárias / morfologia — novo tipo de imagem binária e
binary(); operações de linha eerode()/dilate()aceitam máscaras; adicionadosopen()/close()/top_hat()/black_hat().Filtros — adicionados
cartoon,flood_fill,bilateral,laplacian, aliasesblur/gaussian_blur, e 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 Otsuhistogram.get_threshold()e um objetoThreshold.CMSIS CNN — adicionado
image.classify_object()com um exemplocnn.py(substituído pelo módulonnna v3.0.0).Threads — ativado o módulo
_threaddo MicroPython.Módulo
omv— adicionada informação de versão (version_string,arch,board_type,board_id); ativado o barramento I2C4 domachinee funções matemáticas especiais (erf,gamma, …); adicionados exemplos de motor-shield e muitos novos scripts de exemplo.
Outras alterações e melhorias¶
O relógio externo do sensor H7 foi reduzido para 48 MHz (melhor qualidade de imagem, FPS mais baixo); a qualidade JPEG baixa/alta é agora configurável por placa (e ajustada para o H7); adicionado controlo de funcionalidades por placa via
imlib_config.h(todas as funções de imagem permanecem ativadas no firmware padrão); atualizado o MicroPython incluído.
Correções de erros¶
Processamento de imagem:
Corrigidos
image.save()sem extensão de ficheiro, o mapeamentogain_db/gain_db_ceilingpara OV2640 / OV7725 / OV9650 / MT9V034, ganho excessivo emsharpen(), ruído morfológico nas arestas, uma divisão por zero numa operação de imagem, e uma falha por stack-smash com um tamanho de kernel de filtro demasiado grande (agora produz um erro limpo).
Sistema:
Protegido o buffer USB VCP com uma secção atómica (corrupção série, #313), corrigida a conetividade USB no Windows, a montagem do sistema de ficheiros flash interno quando o cartão SD falha, o valor PLLP de
set_frequency()docpufreq, e um erro de gravação de firmware no bootloader.
Hardware e suporte a placas¶
OpenMV Cam H7 (STM32H7) — nova placa com codificador JPEG por hardware e ADC / DAC do H7.
Módulo
machine— ativado o barramento I2C4.
Alterações que quebram compatibilidade na API¶
Alterações visíveis pelo utilizador na API entre v2.7.0 e v2.8.0. Âmbito: módulos C Python em modules/ e bibliotecas Python em scripts/libraries/.
Ambas as alterações que quebram compatibilidade são menores e afetam apenas scripts que utilizavam a funcionalidade em causa. Cada hash de commit tem uma ligação para o seu diff no GitHub.
A ordem dos argumentos posicionais em Python é agora estrita (menor)¶
A análise de argumentos nos módulos C Python (image / sensor / fir / gif / lcd / mjpeg) lê agora 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() passando a aceitar thickness / fill / scale / size), o código que passava parâmetros fora de ordem posicionalmente — ou passava um color posicional após um dos novos argumentos — deve usar argumentos por palavra-chave ou a ordem posicional documentada.
image.mask_ellipse() removido (menor)¶
image.mask_ellipse() foi removido. Os scripts que o invocavam devem eliminar essa chamada ou utilizar uma ROI explícita / imagem de máscara em alternativa.
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 alteração da ordem de argumentos), e remova as chamadas a image.mask_ellipse() (a remoção de mask_ellipse). Todos os outros scripts funcionam sem alterações.