v2.5.0¶
A v2.5.0 é uma release de imagem rica em recursos: ela adiciona find_rects(), find_circles(), get_regression() (ajuste de linha/regressão), find_number() (dígitos LeNet), as classes de stream ImageWriter / ImageReader, sensor.flush() / width() / height() e suporte a pyb.RTC. O carregamento de imagens agora é baseado em framebuffer — leia as mudanças incompatíveis abaixo.
Destaques¶
image.find_rects()— detector de retângulos / quadriláteros com saída de cantos.image.find_circles()— detecção de círculos por Hough.image.get_regression()— ajuste de linha por mínimos quadrados e robusto (Theil-Sen).image.find_number()— reconhecimento de dígitos LeNet.ImageWriter/ImageReader— grava e reproduz streams de imagem.Suporte a
pyb.RTC, além desensor.flush()/sensor.width()/sensor.height().Incompatível: o carregamento de imagens agora é baseado em framebuffer e gera erro se a imagem for grande demais — veja as mudanças incompatíveis.
Novos recursos¶
Detecção de características — adicionados
image.find_rects()(detector de quadriláteros AprilTag; objetos rect comx/y/w/h/corners/magnitude),image.find_circles()(Hough),image.get_regression()(ajuste de linha por mínimos quadrados + Theil-Sen robusto) eimage.find_number()(reconhecimento de dígitos LeNet), cada um com scripts de exemplo.Cantos dos resultados — adicionado um atributo
cornersaos objetos de resultado de QR code / AprilTag / data matrix / código de barras.Streams de imagem — adicionadas as classes
image.ImageWriter/image.ImageReader(formato de chunks alinhado em 16 bytes) com os exemplosimage_writer.py/image_reader.py.Sensor — adicionados
sensor.flush()(envia o framebuffer ao IDE sem um snapshot) esensor.width()/sensor.height().pyb.RTC— habilitado o suporte a RTC com um exemplortc.py.Adicionados uma cascata Haar de rosto de gato e um exemplo de Servo-Shield (PCA9685); a ferramenta de host
openmv-cascade.pyganhou suporte ao novo formato de cascata XML do OpenCV.
Outras mudanças e melhorias¶
O framebuffer foi refatorado para que os métodos de imagem
copy_to_fbatualizem o preview do IDE; os caminhos doHaarCascade()não exigem mais uma/inicial (cascata interna vs. arquivo é detectado automaticamente); a gravação GIF/MJPEG agora suporta VGA (e GIFs BAYER); oREADME.txtinterno foi atualizado e o arquivo de driveropenmv.infnão é mais criado em um sistema de arquivos novo.
Correções de bugs¶
Imagem:
Corrigidos a acumulação de votos do
find_circles(), o offset de rho doget_regression()com uma ROI e um vazamento de memória, a mesclagem de segmentos dofind_lines(), a média de ângulos dofind_blobs()e os limites de cor padrão (menos restritivos), a estabilidade da ordenação de pontos-chave do ORB / ordenação de descritores e a flag de correspondência, e o carregamento em buffer da cascata Haar (leituras desalinhadas).
Sistema:
Habilitado o Servo 3 (P9) do
pyb(#256), corrigido o init do RTC, aumentado o timeout de caractere da UART (#240) e corrigida a flag “enabled” não inicializada do framebuffer do sensor.
Suporte de hardware e placas¶
Mudanças incompatíveis na API¶
Quebras de API visíveis ao usuário entre a v2.4.1 e a v2.5.0. Escopo: módulos C do Python em modules/ e bibliotecas Python em scripts/libraries/.
A mudança incompatível é uma mudança de behavior (mesma API, resultado diferente) — revalide os scripts afetados. Cada hash de commit aponta para seu diff no GitHub.
O carregamento de imagens é baseado em framebuffer (behavior)¶
image.Image / o carregamento de imagens agora copia a imagem carregada para o framebuffer principal e gera uma exceção se a imagem for grande demais para caber. Carregamentos que antes eram bem-sucedidos em um buffer da heap podem agora falhar — garanta que as imagens carregadas caibam no framebuffer (ou trate o novo erro).
Commits: 87d53385a
Lista de verificação de migração¶
Garanta que as imagens carregadas caibam no framebuffer (ou capture o novo erro “image too large”) onde você antes dependia de carregamentos de imagem baseados na heap (a mudança no carregamento de imagens). Todos os outros scripts rodam sem alterações.