v4.5.3¶
v4.5.3 é uma versão de grande envergadura: autofocos OV5640, desenho de linhas com anti-aliasing, um descodificador JPEG por hardware integrado na linha principal, grandes ganhos de capacidade no i.MX RT (RT1060) e um conjunto alargado de correções de câmara/ISP. Vários métodos de imagem pouco utilizados foram removidos e algumas APIs de ISP/ecrã foram alteradas — consulte as alterações de rutura abaixo.
Destaques¶
Autofoco OV5640 — ativado no OpenMV 4 / 4 Plus / RT1060 (
sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS)), com um exemplo.draw_line()com anti-aliasing e um descodificador JPEG por hardware STM32 integrado na linha principal (descompressão JPEG mais rápida).OpenMV RT1060 passou a incluir ulab, operações ISP,
set_framerate()/set_frame_callback(), um buffer de fotograma muito maior, e o controlador CAN.Rutura:
Image.div()/cartoon()/mul()foram removidos e algumas APIs de ISP/ecrã foram alteradas — consulte as alterações de rutura.
Novas funcionalidades¶
Autofoco OV5640 — o firmware de autofoco está ativado no OPENMV4, OPENMV4P e OPENMV RT1060; ative-o com
sensor.ioctl(sensor.IOCTL_TRIGGER_AUTO_FOCUS). Foi adicionado um novo exemplo07-Sensor-Control/autofocus.py.Desenho de linhas com anti-aliasing —
draw_line()passou a suportar anti-aliasing.Controladores de ecrã SPI personalizados —
SPIDisplayaceita agora um argumentocontroller=e expõe um ganchobus_writepara sequências de inicialização/comando personalizadas.Melhoria de
Image.ccm()— aceita agora matrizes aninhadas 3x3 / 4x3 / 3x4 / 4x4 e arrays ulab (com uma linha de deslocamento por canal opcional); foi adicionado um exemplo de correção de cor.Captura JPEG i.MX RT — captura
sensor.JPEGno Arduino Portenta/Nicla Vision/Giga, maisset_framerate()eset_frame_callback()na porta mimxrt.Validação de modelos TFLite — os modelos incluem agora um hash de ordem de operadores e o tamanho do conjunto de operadores.
WiFi — adicionadas constantes de modo de segurança CYW43; novos scripts de exemplo de controlo de placas i.MX RT (Pin/ADC/CAN/I2C/PWM/SPI/UART/…).
Outras alterações e melhorias¶
MicroPython atualizado para 1.22; CMSIS atualizado para 5.9.0.
Descodificador JPEG por hardware STM32 integrado na linha principal — descompressão JPEG mais rápida no codec integrado.
Otimizados
Image.invert()/negate()e operações de imagem binárias/matemáticas (intrínsecos CMSIS).As bibliotecas
rpcevl53l1xforam tornadas portáveis (utilizammachine/timeem vez depyb), pelo que funcionam em portas não-STM32.Memcpy do buffer de fotograma acelerado por DMA no OpenMV H7 / H7 Plus / Pro / Pure Thermal e Arduino Giga / Nicla Vision / Portenta H7; o STM32 passa agora a sondar dispositivos I2C uma vez por varrimento para arranque mais rápido.
Correções de erros¶
Câmara e sensores:
Corrigido o XCLK da câmara STM32 para um ciclo de trabalho de 50% real e um erro quando a frequência do relógio da câmara é definida como zero; corrigido o crop+transpose Bayer, o desvio de cor YUV422 e
set_windowing()na porta mimxrt.Corrigida a sondagem do ID do chip GC2145 e hmirror/vflip em montagens rodadas; corrigido o PAJ6100 no RT1062 e um estouro de buffer SPI PixArt PAJ7620/PAW3902.
Processamento de imagem:
Corrigido o recorte roi de
find_rects(), o truncamento fracionário de deslocamento emmorph(), os valores predefinidos de contraste/brilho emimage.gamma(), os deslocamentos A/B emget_threshold()no RGB565 e a descodificação JPEG de dimensões que não são múltiplo de 8.
Sistema e bibliotecas:
machine.LED.value()sem argumento devolve agora o estado do LED em vez de o limpar; corrigidos a desinicialização do SSEL SPI num barramento partilhado,machine.deepsleep()no RT1062, uma falha no TF com operadores em falta e a ativação automática da NIC WINC1500/ninaw10 emconnect().
Hardware e suporte de placas¶
OpenMV RT1060 — ulab e operações ISP ativados, buffer de fotograma maior (10M→20M) / fb_alloc (2M→11M), controlador CAN restaurado, mais heap.
Arduino GIGA — suporte de câmara GC2145, com deteção automática GC2145/OV5640 (partilham um endereço I2C).
i.MX RT — suporte de captura
sensor.JPEG.
Alterações de rutura na API¶
Ruturas de API visíveis pelo utilizador entre v4.5.2 e v4.5.3. Âmbito: módulos C Python em modules/ e bibliotecas Python em scripts/libraries/.
Cada alteração está marcada com o seu impacto:
minor — API restrita; afeta apenas scripts que a utilizavam.
behavior — mesma API, resultados diferentes; reverificar scripts ajustados.
As alterações estão agrupadas por impacto nessa ordem. Se apenas pretender portar o seu código, avance para a lista de verificação de migração no final. Cada hash de commit liga ao respetivo diff no GitHub.
Métodos de imagem removidos (minor)¶
Image.div(), Image.cartoon() (e o respetivo exemplo) e Image.mul() foram removidos.
API do módulo de ecrã (minor)¶
O nome de retorno legado udisplay foi removido — o módulo está registado apenas como display. Os métodos exclusivos de DSI dsi_write() / dsi_read() foram substituídos por bus_write() / bus_read(), que estão agora disponíveis em todos os controladores de ecrã.
Alterações de API MQTT e tf.regression (minor)¶
O MQTTClient da biblioteca mqtt foi reformulado: port é agora obrigatório, foram adicionadas novas palavras-chave de construtor ssl_params / callback e um argumento timeout em connect(), os valores predefinidos antigos ssl= / port=0 foram removidos e check_msg() é agora não bloqueante. tf.regression() foi reescrito — a sua assinatura é agora regression(model, array) e processa modelos 1D/2D/3D e quantizados (int8).
Alterações de comportamento ISP / sensor (behavior)¶
Image.awb() foi reformulado — gray-world (predefinição) vs white-patch (max=True) é agora explícito, e o argumento max mais os argumentos gamma / contrast / brightness de Image.gamma() são agora apenas por palavra-chave (chamadas posicionais devem ser atualizadas). A transposição de imagem está agora desativada para YUV422 (produzia anteriormente saída incorreta) e o desvio de cor YUV422 foi corrigido para corresponder ao Bayer. O caminho JPEG STM32 gera agora um erro em caso de incompatibilidade de geometria JPEG em vez de produzir uma imagem corrompida, e o modo AP WiFi aplica agora um modo de segurança predefinido nas portas STM32 e i.MX RT.
Commits: 36d5cecbd, 00500ccde, c1eeaefd6, 333fb2b5f, 55cab8733, c7d40f6af
Lista de verificação de migração¶
Para uma migração limpa para v4.5.3, o trabalho típico é:
Deixar de utilizar
Image.div()/cartoon()/mul()(os métodos removidos).Importar o módulo de ecrã como
displaye mudardsi_write/dsi_readparabus_write/bus_read(a alteração da API de ecrã).Atualizar a construção de
MQTTClient(porté obrigatório;ssl_params/callback) e quaisquer chamadas atf.regression()(as alterações de API de bibliotecas).Passar
awb()maxegamma()gamma/contrast/brightnesscomo argumentos por palavra-chave, e reverificar as suposições de YUV422/transposição e segurança do modo AP (as alterações ISP/sensor).