v4.0.0¶
A v4.0.0 é a versão principal v3 → v4. Introduz a moderna API de buffering multi-fotograma sensor (buffering duplo/triplo e uma FIFO de vídeo), um callback de fotograma completo, um módulo Bluetooth (stack NimBLE) com suporte para a Portenta, o controlador inicial da câmara MT9M114, captura de câmara descarregada via MDMA, suporte a Bayer/JPEG em image.draw_image() e uma atualização para o MicroPython 1.15. O modo de streaming legado foi removido e sensor.set_windowing() foi reformulado — consulte as alterações de quebra de compatibilidade abaixo.
Destaques¶
Buffering multi-fotograma —
sensorpassa a suportar buffering duplo, buffering triplo e um modo FIFO de vídeo para taxas de fotogramas mais altas e suaves.Callback de fotograma completo — registe um callback que é acionado quando um novo fotograma fica disponível, para pipelines de captura sem bloqueio.
Bluetooth — um módulo
bluetoothbaseado na stack NimBLE, ativado no Arduino Portenta H7 (com um exemplo BLE).MT9M114 — controlador inicial do sensor de câmara.
Captura mais rápida — descarregamento MDMA para a captura de dados da câmara;
draw_image()passa a aceitar fontes/destinos Bayer e JPEG.MicroPython 1.15 — o MicroPython incluído foi atualizado de 1.13 para 1.15.
Quebra de compatibilidade: o modo de streaming legado foi removido e
sensor.set_windowing()foi reformulado — consulte as alterações de quebra de compatibilidade.
Novas funcionalidades¶
Multi-buffering do sensor — adicionados
sensor.set_framebuffers()/sensor.get_framebuffers()e os modosSINGLE_BUFFER/DOUBLE_BUFFER/TRIPLE_BUFFER/VIDEO_FIFO, maissensor.get_frame_available()para captura com buffering duplo, triplo e FIFO de vídeo.Callback de fotograma completo — adicionado
sensor.set_frame_callback()para que um callback Python seja executado quando cada novo fotograma terminar.Bluetooth — adicionado um módulo
bluetoothsuportado pela stack NimBLE (submódulo NimBLE, controlador CYW-BT), ativado no Arduino Portenta H7 com um exemplo BLE.MT9M114 — adicionado o controlador inicial do sensor de câmara MT9M114.
draw_image — adicionado suporte a debayering e cópia JPEG para que
image.draw_image()aceite imagens fonte/destino Bayer e JPEG.Descarregamento de captura MDMA — a captura de dados da câmara é descarregada para MDMA para maior débito.
Um argumento de paleta de cores pode agora ser desativado passando
-1(dado queNoneestá reservado como argumento válido).
Outras alterações e melhorias¶
Mudança para a nova implementação I2C por software; alinhamento com o upstream do MicroPython; configuração de ulab por placa; módulos integrados básicos ativados para OpenMV 2; bloqueio de leitura do buffer de fotogramas mais justo; suporte a mutex alargado para Cortex-M0/M0+ com tempo limite de bloqueio.
Correções de erros¶
Câmara e imagem:
Corrigida a fiabilidade de inicialização do FLIR Lepton na placa Pure Thermal, o manuseamento do buffer JPEG / pausa no ImageIO, as definições de vflip/hmirror do HM01B0, a limpeza do buffer JPEG quando uma imagem é invalidada e uma flag
croppedque era definida incorretamente quando o tamanho do fotograma era inválido.
Sistema e conectividade:
Corrigida a drenagem de comandos USB e o comando de reset para bootloader, a inicialização de mutex, a fonte de relógio UART, a definição de página de código FatFS, o manuseamento de ACK out-of-band do WINC1500, a depuração WiFi e o PID USB do Nano33; isolados pinos analógicos dedicados.
Hardware e suporte de placas¶
Sensor de câmara MT9M114 (controlador inicial).
Arduino Portenta H7 — Bluetooth ativado (NimBLE) com um exemplo BLE.
Arduino Nano RP2040 Connect / Nano 33 BLE Sense — flag de depuração WiFi desativada onde não é suportada; exemplo blinky adicionado; correção do PID USB.
Alterações de quebra de compatibilidade¶
Alterações de API visíveis pelo utilizador entre a v3.9.4 e a v4.0.0. Âmbito: módulos C Python em modules/ e bibliotecas Python em scripts/libraries/.
Cada alteração está classificada com o seu impacto:
maior — afeta a maioria dos scripts; muito provavelmente será necessário portar o código.
menor — API restrita; afeta apenas os scripts que a utilizavam.
comportamento — mesma API, resultados diferentes; verifique novamente os scripts afinados.
As alterações estão agrupadas por impacto nessa ordem. Se apenas pretende portar o seu código, avance para a lista de verificação de migração no final. Cada hash de commit tem ligação para o respetivo diff no GitHub.
Modo de streaming removido (maior)¶
O modo de streaming legado do sensor foi removido a favor da nova API de buffering multi-fotograma. O código que ativava o modo de streaming deve mudar para sensor.set_framebuffers() com DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO e conduzir a captura com sensor.snapshot() / sensor.get_frame_available() em vez disso.
Commits: a42f3a647
sensor.set_windowing() reformulado (comportamento)¶
sensor.set_windowing() foi tornado muito mais flexível: aceita agora múltiplas formas de argumentos (um tuplo de região, ou largura/altura centrados, ou x, y, w, h) e resolve a janela relativamente à resolução atual. Os scripts que passavam argumentos de janelamento na forma fixa antiga podem selecionar uma região diferente e devem ser verificados novamente.
Commits: 3e9c43554
MicroPython 1.13 → 1.15 (comportamento)¶
O núcleo MicroPython incluído foi atualizado de 1.13 para 1.15 (via 1.14). O comportamento da biblioteca padrão e da linguagem segue o MicroPython 1.15 upstream; verifique novamente os scripts que dependem de comportamentos específicos de versão em micropython / módulos padrão.
Argumento update_jpeg_buffer do ImageIO removido (menor)¶
A atualização do buffer JPEG do ImageIO foi reformulada para derivar o buffer a partir do argumento de origem da imagem, e o argumento explícito update_jpeg_buffer foi removido. Os scripts que passavam update_jpeg_buffer ao ImageIO devem remover esse argumento.
Commits: 5c6937bd1
Lista de verificação de migração¶
Para uma migração limpa para a v4.0.0, o trabalho típico é:
Substituir qualquer uso do modo de streaming removido pela nova API de multi-buffering
sensor.set_framebuffers()(modo de streaming removido).Verificar novamente as chamadas a
sensor.set_windowing()face ao manuseamento de argumentos reformulado e mais flexível (a alteração de janelamento).Revalidar os scripts que dependem de comportamentos específicos de versão do MicroPython face ao MicroPython 1.15 (a atualização do MicroPython).
Remover o argumento
update_jpeg_bufferdas chamadas ao ImageIO (a alteração do ImageIO).
Todos os outros scripts funcionam sem modificações.