v4.5.1¶
v4.5.1 adiciona dicas de desenho de orientação/proporção de imagem, carregamento de imagens diretamente de um caminho de arquivo, um ioctl de campo de visão amplo do GC2145 e uma nova API de controlador de iluminação de fundo. Também reformula o construtor Image(), as APIs de display e a análise de argumentos dos módulos — leia as mudanças incompatíveis abaixo.
Destaques¶
Dicas de desenho —
draw_image()ganhou dicas de orientação (HMIRROR/VFLIP/TRANSPOSE,ROTATE_90/180/270) e de escala por proporção (SCALE_ASPECT_KEEP/EXPAND/IGNORE).Carregar imagens do disco —
draw_image()/display.write()aceitam uma string de caminho de arquivo.Controle de iluminação de fundo — novas classes
DACBacklight/PWMBacklighte um argumentobacklight=do display.Incompatível: o construtor
Image(), as APIs dedisplaye a análise de argumentos dos módulos mudaram — veja as mudanças incompatíveis.
Novos recursos¶
Dicas de orientação do
draw_image()—image.HMIRROR,image.VFLIP,image.TRANSPOSE, além das convenientesimage.ROTATE_90/ROTATE_180/ROTATE_270.Dicas de proporção do
draw_image()—image.SCALE_ASPECT_KEEP/SCALE_ASPECT_EXPAND/SCALE_ASPECT_IGNOREpara ajustar / expandir / esticar.Constantes de paleta —
image.PALETTE_RAINBOWeimage.PALETTE_IRONBOW(movidas para o módulo image).Campo de visão amplo — novos ioctls
sensor.IOCTL_SET_FOV_WIDE/IOCTL_GET_FOV_WIDE(no GC2145, escala de sensor de até 5x).Carregar do disco —
draw_image()edisplay.write()aceitam uma string de caminho de arquivo de imagem de origem, carregando-a diretamente do armazenamento.Controladores de iluminação de fundo — novas classes
DACBacklightePWMBacklight(importáveis dedisplay) e um argumento somente por palavra-chavebacklight=nos construtores de display SPI/paralelo.
Outras mudanças e melhorias¶
O driver de display DSI ST7701 foi movido para seu próprio módulo
st7701.py(ainda importável viafrom display import *) e está congelado no Arduino Giga; o driver de IMUlsm9ds1foi congelado no Arduino Nano 33 BLE Sense.As câmeras MT9V022 / MT9V034 (global-shutter) agora aplicam correção de ruído de linha para melhor qualidade de imagem.
O volume de armazenamento em massa USB do i.MX RT agora é rotulado como um disco OpenMV.
Correções de bugs¶
Câmera e sensores:
Corrigida a detecção de cantos (
find_keypoints()FAST/AGAST) em imagens com mais de 480 linhas — o buffer por linha agora é dimensionado de acordo com a altura da imagem.Adicionado suporte ao pino FSYNC para
snapshot()sincronizado por quadro no i.MX RT (OpenMV RT1060) e corrigidos os pinos SPI4 MOSI/MISO trocados no RT1060.
Display e vídeo:
Corrigida a ordem dos argumentos do construtor
SPIDisplay(bgr,byte_swap,triple_bufferestavam sendo aplicados aos parâmetros errados).Corrigida a corrupção de imagem no shield de TV ao desenhar uma imagem com um retângulo especificado e os limites de quadro MJPEG incorretos ao gravar quadros redimensionados.
Rede:
O modo AP de WiFi WINC não impõe mais a restrição obsoleta de apenas WEP — os modos AP aberto e WPA funcionam com tratamento adequado de PSK.
Hardware e suporte a placas¶
OpenMV RT1060 — pino FSYNC e pinos SPI4 corrigidos.
Arduino GIGA — solução de contorno para confiabilidade do QSPI; display ST7701 congelado.
Arduino Nano 33 BLE Sense — driver de IMU
lsm9ds1congelado.
Mudanças incompatíveis na API¶
Quebras de API visíveis ao usuário entre a v4.5.0 e a v4.5.1. Escopo: módulos C de Python em modules/ e bibliotecas Python em scripts/libraries/.
Cada mudança é marcada com seu impacto:
minor — API restrita; afeta apenas scripts que a usavam.
behavior — mesma API, resultados diferentes; reavalie scripts ajustados.
As mudanças estão agrupadas por impacto nessa ordem. Se você só quer portar seu código, vá para a lista de verificação de migração no final. Cada hash de commit leva ao seu diff no GitHub.
Construtor Image() e APIs de display (minor)¶
O construtor image.Image foi reformulado para argumentos por palavra-chave (height, pixformat, buffer=, copy_to_fb=); agora ele pode construir uma imagem a partir de um bytearray/buffer existente, e um buffer é obrigatório para formatos compactados. display.write() foi reformulado: x_scale/y_scale agora recebem um float (razão de escala) ou int (tamanho alvo em pixels) e as palavras-chave separadas x_size/y_size foram removidas. O primeiro argumento posicional de WINC.connect() foi renomeado de essid → ssid, e os resultados de varredura de WiFi WINC mudaram para (ssid_bytes, bssid_bytes, channel, rssi, security, N) (SSID/BSSID agora são bytes; BSSID não é mais uma string MAC formatada).
Faixa de iluminação de fundo, escala e argumentos somente por palavra-chave (behavior)¶
Display.backlight() agora recebe uma intensidade de 0–100 (0 = desligado, 100 = total) em vez de 0–255, lançando ValueError fora da faixa. Valores inteiros de x_scale/y_scale agora são tratados como um fator de escala multiplicativo (igual aos floats) em vez de uma dimensão de pixel alvo — isso afeta fir.snapshot()/draw_ir(), tof.snapshot()/ draw_depth(), display e a escala de tv. A análise de argumentos nos módulos sensor, fir, tof, tv, mjpeg, gif, imageio, tf e audio foi unificada, tornando somente por palavra-chave várias opções anteriormente posicionais (nomes, padrões e comportamento permanecem inalterados no restante).
Commits: 391ec443f, 8bd25d6cd, 477312656, 08bf62a32, a4c0f20bf, 9b411a66d, 3d679f5a6, d15fc6b8d, 555e67ecd
Lista de verificação de migração¶
Para um port limpo para a v4.5.1, o trabalho típico é:
Atualize a construção de
Image()para a nova forma por palavra-chave, mudedisplay.write()para não usarx_size/y_sizee renomeieWINC.connect()essid→ssid(trate as novas tuplas de varredura baseadas em bytes) (as mudanças de construtor/display/WINC).Reescale as chamadas de
Display.backlight()para 0–100, reavalie qualquer uso dex_scale/y_scaleinteiro e passe como palavras-chave as opções de módulo antes posicionais (as mudanças de comportamento).