v4.5.3¶
v4.5.3 é uma grande versão: autofoco do OV5640, desenho de linhas com anti-aliasing, um decodificador JPEG por hardware incorporado ao código principal, grandes ganhos de capacidade para o i.MX RT (RT1060) e um amplo conjunto de correções de câmera/ISP. Vários métodos de imagem raramente usados foram removidos e algumas APIs de ISP/display mudaram — leia as mudanças incompatíveis abaixo.
Destaques¶
Autofoco do OV5640 — habilitado no OpenMV 4 / 4 Plus / RT1060 (
sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS)), com um exemplo.draw_line()com anti-aliasing e um decodificador JPEG por hardware do STM32 incorporado ao código principal (descompressão JPEG mais rápida).O OpenMV RT1060 ganhou ulab, operações de ISP,
set_framerate()/set_frame_callback(), um frame buffer muito maior e o driver CAN.Incompatível:
Image.div()/cartoon()/mul()foram removidos e algumas APIs de ISP/display mudaram — veja as mudanças incompatíveis.
Novos recursos¶
Autofoco do OV5640 — o firmware de autofoco está habilitado no OPENMV4, OPENMV4P e OPENMV RT1060; acione-o com
sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS). Um novo exemplo07-Sensor-Control/autofocus.pyfoi adicionado.Desenho de linhas com anti-aliasing —
draw_line()ganhou anti-aliasing.Controladores de display SPI personalizados —
SPIDisplayagora aceita uma palavra-chavecontroller=e expõe um hookbus_writepara sequências de inicialização/comando personalizadas.Atualização do
Image.ccm()— agora aceita matrizes aninhadas 3x3 / 4x3 / 3x4 / 4x4 e arrays do ulab (com uma linha opcional de offset por canal); foi adicionado um exemplo de correção de cor.Captura JPEG no i.MX RT — captura
sensor.JPEGno Arduino Portenta/Nicla Vision/Giga, além deset_framerate()eset_frame_callback()na porta mimxrt.Validação de modelo TFLite — os modelos agora carregam um hash da ordem dos operadores e o tamanho do conjunto de operadores.
WiFi — adicionadas constantes de modo de segurança do CYW43; novos scripts de exemplo de controle de placa para o i.MX RT (Pin/ADC/CAN/I2C/PWM/SPI/UART/…).
Outras mudanças e melhorias¶
MicroPython atualizado para 1.22; CMSIS atualizado para 5.9.0.
Decodificador JPEG por hardware do STM32 incorporado ao código principal — descompressão JPEG mais rápida no codec on-chip.
Otimizados
Image.invert()/negate()e as operações binárias/matemáticas de imagem (intrínsecos do CMSIS).As bibliotecas
rpcevl53l1xforam tornadas portáveis (usammachine/timeem vez depyb), então rodam em portas não-STM32.memcpy de frame buffer acelerado por DMA no OpenMV H7 / H7 Plus / Pro / Pure Thermal e no Arduino Giga / Nicla Vision / Portenta H7; o STM32 agora varre os dispositivos I2C uma vez por varredura para inicialização mais rápida.
Correções de bugs¶
Câmera e sensores:
Corrigido o XCLK da câmera do STM32 para um ciclo de trabalho real de 50% e um bug quando a frequência do clock da câmera é definida como zero; corrigidos crop+transpose de Bayer, desvio de cor YUV422 e
set_windowing()na porta mimxrt.Corrigida a sondagem do chip-ID do GC2145 e hmirror/vflip em montagens rotacionadas; corrigido o PAJ6100 no RT1062 e um estouro de buffer SPI do PixArt PAJ7620/PAW3902.
Processamento de imagem:
Corrigidos o recorte de roi em
find_rects(), o truncamento de offset fracionário emmorph(), os padrões de contraste/brilho emimage.gamma(), os offsets A/B deget_threshold()em RGB565 e a decodificação JPEG de dimensões que não são múltiplas de 8.
Sistema e bibliotecas:
machine.LED.value()sem argumento agora retorna o estado do LED em vez de limpá-lo; corrigidos o deinit do SPI SSEL em um barramento compartilhado,machine.deepsleep()no RT1062, um travamento do TF em operadores ausentes e a auto-ativação da NIC WINC1500/ninaw10 emconnect().
Hardware e suporte a placas¶
OpenMV RT1060 — ulab e operações de ISP habilitados, frame buffer maior (10M→20M) / fb_alloc (2M→11M), driver CAN restaurado, mais heap.
Arduino GIGA — suporte à câmera GC2145, com detecção automática de GC2145/OV5640 (eles compartilham um endereço I2C).
i.MX RT — suporte à captura
sensor.JPEG.
Mudanças incompatíveis na API¶
Quebras de API visíveis ao usuário entre v4.5.2 e v4.5.3. 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; reverifique os scripts ajustados.
As mudanças são agrupadas por impacto nessa ordem. Se você só quer portar seu código, vá direto para a lista de verificação de migração no final. Cada hash de commit leva ao seu diff no GitHub.
Métodos de imagem removidos (minor)¶
Image.div(), Image.cartoon() (e seu exemplo) e Image.mul() foram removidos.
API do módulo de display (minor)¶
O fallback legado para o nome de módulo udisplay foi removido — o módulo é registrado apenas como display. Os métodos dsi_write() / dsi_read() exclusivos do DSI foram substituídos por bus_write() / bus_read(), que agora estão disponíveis em todos os controladores de display.
Mudanças nas APIs de MQTT e tf.regression (minor)¶
O MQTTClient da biblioteca mqtt foi reformulado: port agora é obrigatório, foram adicionadas as novas palavras-chave de construtor ssl_params / callback e um argumento timeout em connect(), os antigos padrões ssl= / port=0 foram removidos e check_msg() agora é não-bloqueante. tf.regression() foi reescrito — sua assinatura agora é regression(model, array) e ele lida com modelos 1D/2D/3D e quantizados (int8).
Mudanças de comportamento de ISP / sensor (behavior)¶
Image.awb() foi reformulado — gray-world (padrão) vs. white-patch (max=True) agora é explícito, e o argumento max mais os argumentos gamma / contrast / brightness de Image.gamma() agora são somente por palavra-chave (chamadas posicionais precisam ser atualizadas). A transposição de imagem agora está desabilitada para YUV422 (ela anteriormente produzia saída incorreta) e o desvio de cor YUV422 foi corrigido para corresponder ao Bayer. O caminho JPEG do STM32 agora gera um erro em caso de incompatibilidade de geometria JPEG em vez de produzir uma imagem corrompida, e o modo AP do WiFi agora aplica um modo de segurança padrão nas portas STM32 e i.MX RT.
Commits: 36d5cecbd, 00500ccde, c1eeaefd6, 333fb2b5f, 55cab8733, c7d40f6af
Lista de verificação de migração¶
Para uma portabilidade limpa para a v4.5.3, o trabalho típico é:
Pare de usar
Image.div()/cartoon()/mul()(os métodos removidos).Importe o módulo de display como
displaye troquedsi_write/dsi_readporbus_write/bus_read(a mudança na API de display).Atualize a construção do
MQTTClient(porté obrigatório;ssl_params/callback) e quaisquer chamadastf.regression()(as mudanças nas APIs de biblioteca).Passe o
maxdeawb()e ogamma/contrast/brightnessdegamma()como argumentos por palavra-chave, e reverifique as suposições de YUV422/transposição e de segurança do modo AP (as mudanças de ISP/sensor).