v4.5.1¶
A v4.5.1 adiciona sugestões de orientação/proporção de desenho de imagens, carregamento de imagens diretamente a partir de um caminho de ficheiro, um ioctl de campo de visão alargado para o GC2145, e uma nova API de controlo de retroiluminação. Também reformula o construtor Image(), as APIs de display, e a análise de argumentos dos módulos — leia as alterações de rutura abaixo.
Destaques¶
Sugestões de desenho —
draw_image()ganhou sugestões de orientação (HMIRROR/VFLIP/TRANSPOSE,ROTATE_90/180/270) e de escalonamento de proporção (SCALE_ASPECT_KEEP/EXPAND/IGNORE).Carregar imagens do disco —
draw_image()/display.write()aceitam um caminho de ficheiro como string.Controlo de retroiluminação — novas classes
DACBacklight/PWMBacklighte um argumentobacklight=no ecrã.Rutura: o construtor
Image(), as APIs dedisplay, e a análise de argumentos dos módulos foram alterados — consulte as alterações de rutura.
Novas funcionalidades¶
Sugestões de orientação em
draw_image()—image.HMIRROR,image.VFLIP,image.TRANSPOSE, mais os convenientesimage.ROTATE_90/ROTATE_180/ROTATE_270.Sugestões de proporção em
draw_image()—image.SCALE_ASPECT_KEEP/SCALE_ASPECT_EXPAND/SCALE_ASPECT_IGNOREpara ajustar / expandir / esticar.Constantes de paleta —
image.PALETTE_RAINBOWeimage.PALETTE_IRONBOW(movidos para o módulo image).Campo de visão alargado — novos ioctls
sensor.IOCTL_SET_FOV_WIDE/IOCTL_GET_FOV_WIDE(no GC2145, até 5x de escalonamento do sensor).Carregar do disco —
draw_image()edisplay.write()aceitam um caminho de ficheiro de imagem fonte como string, carregando-a diretamente do armazenamento.Controladores de retroiluminação — novas classes
DACBacklightePWMBacklight(importáveis a partir dedisplay), e um argumentobacklight=exclusivamente por palavra-chave nos construtores de ecrã SPI/paralelo.
Outras alterações e melhorias¶
O controlador de ecrã DSI ST7701 foi movido para o seu próprio módulo
st7701.py(ainda importável viafrom display import *) e está congelado no Arduino Giga; o controlador IMUlsm9ds1foi congelado no Arduino Nano 33 BLE Sense.As câmaras MT9V022 / MT9V034 (obturador global) aplicam agora correção de ruído por linha para melhor qualidade de imagem.
O volume USB de armazenamento em massa do i.MX RT é agora identificado como um disco OpenMV.
Correções de erros¶
Câmara e sensores:
Corrigida a deteçã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 fotograma no i.MX RT (OpenMV RT1060), e corrigidos os pinos SPI4 MOSI/MISO trocados no RT1060.
Ecrã e vídeo:
Corrigida a ordem dos argumentos do construtor
SPIDisplay(bgr,byte_swap,triple_buffereram aplicados aos parâmetros errados).Corrigida a corrupção de imagem no escudo TV ao desenhar uma imagem com um retângulo especificado, e limites de fotograma MJPEG incorretos ao gravar fotogramas escalonados.
Rede:
O modo AP WINC WiFi já não impõe a restrição obsoleta de WEP exclusivo — 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 alternativa de fiabilidade QSPI; ecrã ST7701 congelado.
Arduino Nano 33 BLE Sense — controlador IMU
lsm9ds1congelado.
Alterações de rutura da API¶
Ruturas de API visíveis pelo utilizador entre v4.5.0 e v4.5.1. Âmbito: módulos C Python em modules/ e bibliotecas Python em scripts/libraries/.
Cada alteração está marcada com o seu impacto:
menor — API restrita; apenas afeta scripts que a usavam.
comportamento — mesma API, resultados diferentes; rever scripts ajustados.
As alterações estão agrupadas por impacto nessa ordem. Se pretende apenas portar o seu código, salte para a lista de verificação de migração no final. Cada hash de commit liga ao seu diff no GitHub.
Construtor Image() e APIs de display (menor)¶
O construtor image.Image foi reformulado para usar argumentos por palavra-chave (height, pixformat, buffer=, copy_to_fb=); pode agora construir uma imagem a partir de um bytearray/buffer existente, e é obrigatório um buffer para formatos comprimidos. display.write() foi reformulado: x_scale/y_scale aceitam agora um float (rácio de escala) ou int (tamanho alvo em píxeis) 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 pesquisa WiFi WINC passaram para (ssid_bytes, bssid_bytes, channel, rssi, security, N) (SSID/BSSID são agora bytes; o BSSID já não é uma string MAC formatada).
Intervalo de retroiluminação, escalonamento e argumentos exclusivamente por palavra-chave (comportamento)¶
Display.backlight() aceita agora uma intensidade de 0 a 100 (0 = desligado, 100 = máximo) em vez de 0 a 255, lançando ValueError fora do intervalo. Valores inteiros de x_scale/y_scale são agora tratados como um fator de escala multiplicativo (igual aos floats) em vez de uma dimensão em píxeis alvo — isto afeta fir.snapshot()/draw_ir(), tof.snapshot()/draw_depth(), display, e o escalonamento de tv. A análise de argumentos dos módulos sensor, fir, tof, tv, mjpeg, gif, imageio, tf, e audio foi unificada, tornando algumas opções anteriormente posicionais em exclusivamente por palavra-chave (nomes, valores por omissão e comportamento permanecem inalterados).
Commits: 391ec443f, 8bd25d6cd, 477312656, 08bf62a32, a4c0f20bf, 9b411a66d, 3d679f5a6, d15fc6b8d, 555e67ecd
Lista de verificação de migração¶
Para uma portabilidade limpa para a v4.5.1, o trabalho típico é:
Atualizar a construção de
Image()para a nova forma por palavra-chave, trocardisplay.write()dex_size/y_size, e renomearWINC.connect()essid→ssid(tratar os novos tuplos de pesquisa baseados em bytes) (as alterações de construtor/display/WINC).Reescalonar as chamadas de
Display.backlight()para 0–100, rever qualquer uso dex_scale/y_scaleinteiro, e passar opções de módulos anteriormente posicionais como palavras-chave (as alterações de comportamento).