v3.6.0

A v3.6.0 traz suporte completo à câmera OV5640 de 5 MP com novos framesizes de alta resolução (HD / FHD / QHD / QXGA / WQXGA), atualiza o núcleo para o MicroPython 1.12, otimiza intensamente o codificador JPEG por software e a detecção de AprilTag / linhas, adiciona UVC (vídeo USB) na OpenMV Cam H7 Plus, e oferece suporte a flash QSPI de até 32 MB. O comportamento do MicroPython e o get_histogram() mudaram — leia as alterações incompatíveis abaixo.

Destaques

  • OV5640 de 5 MP — driver completo de câmera com novos framesizes HD / FHD / QHD / QXGA / WQXGA / WQXGA2.

  • MicroPython 1.12 — o núcleo incluído foi atualizado.

  • Pipeline mais rápido — codificação JPEG por software, detecção de AprilTag, detecção de linhas LSD, histeq() e decodificação de QR-code intensamente otimizados.

  • UVC na H7 Plus — a OpenMV Cam H7 Plus pode atuar como dispositivo de vídeo USB.

  • Incompatível: o comportamento do MicroPython, a normalização do image.get_histogram() e a saída JPEG/escala de cinza do OpenMV 3 mudaram — veja as alterações incompatíveis.

Novos recursos

  • OV5640 — adicionado suporte completo à câmera OV5640 de 5 MP (configuração de clock externo na inicialização do sensor) e as novas constantes de framesize sensor.HD / FHD / QHD / QXGA / WQXGA / WQXGA2.

  • TIM4 — liberado para que possa ser usado a partir do MicroPython.

  • Adicionado um exemplo de escrita temporizada de DAC (dac_write_timed.py) e renomeado dac_control.py para dac_write.py.

Outras alterações e melhorias

  • Atualizado o MicroPython incluído para 1.12; otimizado intensamente o codificador JPEG por software (caminho VGA, caminhos de escala de cinza/binário, matemática inteira em vez de ponto flutuante, captura otimizada de MCU), o LSD find_line_segments(), a detecção de AprilTag, o Image.histeq(), e a conversão de QR-code / RGB-para-cinza; adicionado suporte a flash QSPI para chips de até 32 MB; removido o obsoleto exemplo cnn.py do CMSIS-CNN.

Correções de bugs

Câmera e imagem:

  • Corrigida a corrupção da codificação JPEG em HQQQVGA, a compressão de imagem binária (1 bit) → JPEG, uma regressão no find_line_segments() (reabilitada a verificação não alinhada NOTDEF), e pequenos problemas no driver OV2640.

Sistema e boot:

  • Corrigida a corrupção de autoteste / sistema de arquivos (selftest.py agora roda antes do USB MSC ser habilitado, e o USB MSC é habilitado em um erro fatal para que o host possa ler o log de erros), o write_timed() do pyb.DAC, os tempos do machine.I2C do H7, a reabilitação do overdrive do F7 após o modo stop, e o intervalo do rtc.wakeup() do stop_mode.py.

Hardware e suporte a placas

  • OV5640 — driver completo de câmera de 5 MP com framesizes de alta resolução.

  • OpenMV Cam H7 Plus — suporte a UVC (vídeo USB); o alvo de placa OPENMV4R foi renomeado para OPENMV4P.

  • Flash QSPI — chips de até 32 MB agora são suportados.

Alterações incompatíveis na API

Quebras de API visíveis ao usuário entre a v3.5.2 e a v3.6.0. Escopo: módulos C do Python em modules/ e bibliotecas Python em scripts/libraries/.

Todas as três alterações incompatíveis são alterações de comportamento (mesma API, resultados diferentes) — reverifique os scripts afetados. Cada hash de commit liga ao seu diff no GitHub.

MicroPython atualizado para 1.12 (comportamento)

O núcleo MicroPython incluído foi atualizado para 1.12. O comportamento da biblioteca padrão e da linguagem segue o MicroPython 1.12 upstream; reverifique scripts que dependem de comportamento específico de versão do micropython / módulos padrão.

Commits: eafd431ea

A normalização de limiar do image.get_histogram() mudou (comportamento)

O image.get_histogram() (e o get_statistics()) com limiares de cor agora normaliza pelo número de pixels limiarizados em vez de toda a ROI, e usa piso (floor) em vez de arredondamento para a indexação de bins. Os valores de histograma/estatísticas para chamadas com limiar diferem das versões anteriores — reajuste o código que comparava com valores absolutos de histograma.

Commits: 7cf0f8089

A saída JPEG/escala de cinza do OpenMV 3 mudou (comportamento)

Para economizar flash, a tabela de consulta YUV do OpenMV 3 (M7) foi desabilitada, de modo que os valores de pixel da saída JPEG e em escala de cinza são calculados de forma ligeiramente diferente no OpenMV 3. A saída ainda é válida, mas difere marginalmente das versões anteriores; reverifique comparações exatas de pixel no OpenMV 3.

Commits: 0e4b46e41

Lista de verificação de migração

Revalide scripts que dependem de comportamento específico de versão do MicroPython em relação ao 1.12 (a atualização do MicroPython), reajuste o código que comparava com valores absolutos de get_histogram() / get_statistics() ao usar limiares de cor (a alteração do histograma), e reverifique comparações exatas de pixel no OpenMV 3 (a alteração de saída do OpenMV 3). Todos os outros scripts funcionam sem alterações.