v4.5.9¶
v4.5.9 traz transmissão de pré-visualização em bruto para placas sem codificador JPEG por hardware, recorte de sensor por hardware para libertar mais RAM, descompressão de Bayer mais rápida com aceleração Helium, e um conjunto de correções de câmara/depuração USB. Também altera a API de resultados AprilTag e o conjunto de famílias AprilTag por omissão, por isso leia as alterações incompatíveis abaixo.
Destaques¶
Transmissão de pré-visualização em bruto — as placas sem codificador JPEG por hardware podem agora enviar fotogramas brutos reduzidos para o IDE/host em vez de falhar a pré-visualização.
Recorte de sensor por hardware — definir um tamanho de fotograma menor reduz agora a memória por buffer e liberta RAM para
fb_alloc().Descompressão de Bayer mais rápida — a conversão Bayer→RGB/escala de cinzentos é agora acelerada por SIMD Helium nas placas Cortex-M55.
Incompatível: o objeto de resultado AprilTag mudou para acesso por atributo e o conjunto de famílias AprilTag por omissão foi reduzido (consulte as alterações AprilTag e a alteração da família AprilTag).
Novas funcionalidades¶
Transmissão de pré-visualização em bruto — as placas sem codificador JPEG por hardware podem contornar o JPEG e transmitir fotogramas brutos reduzidos (limitados a ~60 KB) para o IDE/host, permitindo a pré-visualização ao vivo nessas placas.
Outras alterações e melhorias¶
Recorte por hardware está agora ativado em todas as placas STM32/NXP (Giga, Nicla Vision, Portenta H7, OpenMV 1–4 / 4 Plus / Pure Thermal / RT1060). Quando é definido um tamanho ou janela de fotograma, a memória por buffer é reduzida para o tamanho recortado, libertando mais RAM para
fb_alloc().Descompressão de Bayer mais rápida — a conversão Bayer→RGB565/escala de cinzentos é agora acelerada por ARM Helium/MVE SIMD nas placas Cortex-M55 (p. ex. RT1060), com um caminho JPEG partilhado por SIMD.
Depuração IDE mais rápida — o depurador transfere agora dados diretamente da pilha USB quando possível, evitando uma cópia extra.
Submódulo MicroPython atualizado — as placas podem redimensionar o buffer CDC do TinyUSB, além de correções no GC e nas regras de compilação.
Correções de erros¶
Câmara e sensores:
Corrigido o padrão Bayer/CFA do OV7725 (GBRG → BGGR), corrigindo a saída de cor descomprimida nas câmaras OV7725; o OV7725 reporta agora o formato de pixel Bayer, e os sensores apenas Bayer reportam agora uma profundidade de fonte de 1 byte por pixel.
Corrigido o cálculo do tamanho do framebuffer bruto/Bayer.
Aprendizagem automática:
O TensorFlow Lite Micro usa agora a memória livre do heap GC ao dimensionar a arena de tensores temporária, evitando falhas de alocação ao carregar modelos em placas com memória de buffer de fotograma limitada.
Host / IDE:
Corrigido o tratamento do buffer CDC de depuração USB em placas TinyUSB para um débito série/depuração mais fiável.
tools/pyopenmv: corrigida a ordem de bytes RGB565, adicionado um argumentoscalee a ferramenta de buffer de fotograma reporta agora o tamanho/formato da imagem.
Hardware e suporte a placas¶
OV7725 reporta agora o formato de pixel Bayer (tratamento correto de raw/CFA).
Recorte por hardware ativado em toda a gama de placas STM32/NXP.
Alterações incompatíveis da API¶
Alterações da API visíveis para o utilizador entre v4.5.8 e v4.5.9. Âmbito: módulos C Python em modules/ e bibliotecas Python em scripts/libraries/.
Cada alteração está etiquetada com o seu impacto:
minor — API restrita; só afeta scripts que a usavam.
behavior — mesma API, resultados diferentes; reverifique scripts ajustados.
As alterações estão agrupadas por impacto nessa ordem. Se quiser 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.
Objetos de resultado AprilTag e set_buffers (minor)¶
Os resultados AprilTag de find_apriltags() expõem agora os 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 novos acessores name (string do nome da família) e cxf / cyf com precisão de vírgula flutuante.
Separadamente, a configuração automática do buffer de vídeo foi alterada: set_buffers substitui auto_adjust — passe -1 para usar até três buffers do tamanho do fotograma (ou o máximo que couber) e 1 para usar todo o buffer de fotograma. O dimensionamento do buffer é agora consciente dos bits por pixel, pelo que podem ser alocados mais buffers 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 (é fornecido um exemplo de temperatura com aioble). As classes master/slave de RPC sobre rede foram removidas de rpc.py.
Famílias AprilTag desativadas por omissão (behavior)¶
As famílias AprilTag são agora individualmente selecionáveis em tempo de compilação, e as não utilizadas estão desativadas por omissão. Nas placas padrão, find_apriltags() deteta agora apenas a família TAG36H11, a menos que o firmware seja recompilado com outras famílias ativadas. Os scripts que dependem de outras famílias (TAG16H5, TAG25H9, …) numa compilação padrão deixarão silenciosamente de as detetar.
Commit: effe12f2c
Lista de verificação de migração¶
Para uma migração limpa para v4.5.9, o trabalho típico é:
Altere o acesso aos resultados AprilTag de chamadas de método para atributos (
tag.cx()→tag.cx), e troqueauto_adjustporset_buffers(as alterações AprilTag / buffer).Substitua
ble_advertisingporaioblee elimine qualquer uso de master/slave de RPC sobre rede (as remoções).Se usar famílias AprilTag diferentes de
TAG36H11numa compilação padrão, note que estas já não são detetadas por omissão (a alteração da família AprilTag).