v4.5.9¶
v4.5.9 traz o streaming de pré-visualização bruta para placas sem codificador JPEG de hardware, recorte de sensor por hardware para liberar mais RAM, debayering acelerado por Helium mais rápido e um conjunto de correções de câmera/depuração USB. Ela também altera a API de resultados do AprilTag e o conjunto padrão de famílias do AprilTag, então leia as mudanças incompatíveis abaixo.
Destaques¶
Streaming de pré-visualização bruta — placas sem codificador JPEG de hardware agora podem enviar quadros brutos reduzidos para a IDE/host, em vez de falhar na pré-visualização.
Recorte de sensor por hardware — definir um tamanho de quadro menor agora reduz a memória por buffer e libera RAM para
fb_alloc().Debayering mais rápido — a conversão de Bayer→RGB/escala de cinza agora é acelerada por Helium-SIMD em placas Cortex-M55.
Incompatível: o objeto de resultado do AprilTag passou a usar acesso por atributos e o conjunto padrão de famílias do AprilTag foi reduzido (veja as mudanças do AprilTag e a mudança das famílias do AprilTag).
Novos recursos¶
Streaming de pré-visualização bruta — placas sem codificador JPEG de hardware podem ignorar o JPEG e transmitir quadros brutos reduzidos (limitados a ~60 KB) para a IDE/host, de modo que a pré-visualização ao vivo funciona nessas placas.
Outras mudanças e melhorias¶
Recorte por hardware agora está habilitado em todas as placas STM32/NXP (Giga, Nicla Vision, Portenta H7, OpenMV 1–4 / 4 Plus / Pure Thermal / RT1060). Quando um tamanho de quadro ou janela é definido, a memória por buffer é reduzida ao tamanho recortado, liberando mais RAM para
fb_alloc().Debayering mais rápido — a conversão de Bayer→RGB565/escala de cinza agora é acelerada por SIMD ARM Helium/MVE em placas Cortex-M55 (por exemplo, RT1060), com um caminho de codificador JPEG SIMD compartilhado.
Depuração mais rápida na IDE — o depurador agora transfere dados diretamente da pilha USB quando possível, evitando uma cópia extra.
Submódulo do MicroPython atualizado — as placas podem redimensionar o buffer CDC do TinyUSB, além de correções de GC e de regras de build.
Correções de bugs¶
Câmera e sensores:
Corrigido o padrão Bayer/CFA do OV7725 (GBRG → BGGR), corrigindo a saída de cor após o debayering em câmeras OV7725; o OV7725 agora reporta o formato de pixel Bayer, e os sensores apenas-Bayer agora reportam uma profundidade de origem de 1 byte por pixel.
Corrigido o cálculo do tamanho do framebuffer raw/Bayer.
Aprendizado de máquina:
O TensorFlow Lite Micro agora usa a memória livre do heap de GC ao dimensionar a arena temporária de tensores, evitando falhas de alocação no carregamento de modelos em placas com memória de frame buffer limitada.
Host / IDE:
Corrigido o tratamento do buffer CDC de depuração USB em placas TinyUSB, para um throughput de serial/depuração mais confiável.
tools/pyopenmv: corrigida a ordem de bytes do RGB565, adicionado um argumentoscalee a ferramenta de frame buffer agora reporta o tamanho/formato da imagem.
Hardware e suporte a placas¶
OV7725 agora reporta o formato de pixel Bayer (tratamento correto de raw/CFA).
Recorte por hardware habilitado em toda a linha de placas STM32/NXP.
Mudanças incompatíveis na API¶
Quebras de API visíveis ao usuário entre a v4.5.8 e a v4.5.9. 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 os scripts que a usavam.
behavior — mesma API, resultados diferentes; reverifique os scripts ajustados.
As mudanças estã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 aponta para o seu diff no GitHub.
Objetos de resultado do AprilTag e set_buffers (minor)¶
Os resultados de AprilTag de find_apriltags() agora expõem seus dados como atributos em vez de métodos — use tag.cx, tag.cy, tag.rotation, tag.family, tag.corners em vez de tag.cx(), tag.family(), etc. Foram adicionados o novo acessor name (string com o nome da família) e os acessores de precisão de float cxf / cyf.
Separadamente, a configuração automática do buffer de vídeo mudou: set_buffers substitui auto_adjust — passe -1 para usar até três buffers do tamanho do quadro (ou o máximo que couber) e 1 para usar todo o frame buffer. O dimensionamento do buffer agora leva em conta os bits por pixel, de modo que mais buffers podem ser alocados para formatos de 1 bpp.
ble_advertising e RPC-sobre-rede removidos (minor)¶
A biblioteca auxiliar ble_advertising e o exemplo ble_temperature.py foram removidos — use aioble em vez disso (um exemplo de temperatura com aioble é fornecido). As classes master/slave de RPC em rede foram removidas de rpc.py.
Famílias do AprilTag desabilitadas por padrão (behavior)¶
As famílias do AprilTag agora são selecionáveis individualmente em tempo de compilação, e as não utilizadas estão desabilitadas por padrão. Em placas padrão, find_apriltags() agora detecta apenas a família TAG36H11, a menos que o firmware seja recompilado com outras famílias habilitadas. Os scripts que dependem de outras famílias (TAG16H5, TAG25H9, …) em um build padrão deixarão de detectá-las silenciosamente.
Commit: effe12f2c
Lista de verificação de migração¶
Para uma portabilidade limpa para a v4.5.9, o trabalho típico é:
Altere o acesso aos resultados do AprilTag de chamadas de método para atributos (
tag.cx()→tag.cx) e troqueauto_adjustporset_buffers(as mudanças de AprilTag / buffer).Substitua
ble_advertisingporaioblee abandone qualquer uso das classes master/slave de RPC em rede (as remoções).Se você usa famílias do AprilTag diferentes de
TAG36H11em um build padrão, observe que elas deixam de ser detectadas por padrão (a mudança das famílias do AprilTag).