v2.6.0

v2.6.0 atualiza o núcleo para MicroPython 1.9.2, muda find_line_segments() para o algoritmo LSD, acrescenta suporte para o sensor de obturador global MT9V034, correção de perspetiva image.rotation_corr(), sensor.sleep(), gravação de imagens brutas e a base para a placa OpenMV 4. find_line_segments(), vários tamanhos de fotograma e o comportamento do MicroPython foram alterados — consulte as alterações incompatíveis abaixo.

Destaques

  • Atualização do núcleo MicroPython 1.9.2.

  • Segmentos de linha LSDfind_line_segments() utiliza agora o algoritmo Line Segment Detector.

  • Suporte para o sensor de obturador global MT9V034.

  • image.rotation_corr() — correção de rotação de perspetiva X/Y/Z.

  • Modo de suspensão suave sensor.sleep() e gravação de imagens brutas (não comprimidas).

  • Incompatível: os parâmetros de find_line_segments(), várias constantes de tamanho de fotograma e o comportamento do MicroPython foram alterados — consulte as alterações incompatíveis.

Novas funcionalidades

  • image.rotation_corr() — adicionada correção de rotação de perspetiva X/Y/Z com um exemplo rotation_correction.py.

  • sensor.sleep(enable) — coloca a câmara em modo de suspensão suave (com um exemplo de modo de suspensão).

  • Imagens brutasimage.save() pode agora escrever imagens brutas (não comprimidas).

  • MT9V034 — adicionado suporte para sensor de obturador global, expondo a constante sensor.MT9V034.

  • Adicionado um exemplo lens_correction.py para image.lens_corr() e ficheiros de suporte para a placa OpenMV 4 (configuração de placa / bootloader / base do linker).

Outras alterações e melhorias

  • MicroPython integrado atualizado para 1.9.2 (plumbing do port 1.9, oofatfs); find_line_segments.py reescrito para a nova API LSD (correção de lente desativada por predefinição); API openmv do lado do anfitrião atualizada (init(portname) / exec_script / stop_script); relógio do sensor OpenMV Cam M4 reduzido (FPS máximo inferior no M4); o botão Stop do IDE utiliza agora uma exceção forçada para interromper os scripts de forma mais fiável.

Correções de erros

  • Corrigido image.lens_corr() que deixava pixels residuais (o buffer de destino é agora limpo antes do remapeamento), blob.density() a utilizar divisão inteira (retornava sempre 0, #268), o mapeamento de pinos UART do OpenMV 2 (M4) e atualizado qrcodes_with_lens_corr.py para usar QVGA.

Hardware e suporte de placas

  • Sensor de obturador global MT9V034.

  • OpenMV 4 — ficheiros de suporte de placa (base).

  • OpenMV 2 (M4) — correção do mapeamento de pinos UART.

Alterações incompatíveis de API

Alterações de API visíveis ao utilizador entre v2.5.0 e v2.6.0. Âmbito: módulos C Python em modules/ e bibliotecas Python em scripts/libraries/.

Cada alteração está etiquetada com o seu impacto:

  • major — afeta a maioria dos scripts que utilizavam a funcionalidade; será necessário portar código.

  • minor — API restrita; afeta apenas os scripts que a utilizavam.

  • behavior — mesma API, resultados diferentes; verifique novamente os 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 está ligado ao seu diff no GitHub.

find_line_segments() mudou para LSD (major)

image.find_line_segments() foi reescrito para utilizar o algoritmo Line Segment Detector (LSD). Os parâmetros antigos threshold / theta_margin / rho_margin / segment_threshold / x_stride / y_stride foram substituídos por merge_distance e max_theta_diff (por exemplo, find_line_segments(merge_distance=0, max_theta_diff=15)). Também deixou de estar disponível em placas de classe M4 (OpenMV 2).

Commits: 5a3153c8b, cbe2a4aeb

Constantes de tamanho de fotograma inválidas removidas (minor)

As constantes de tamanho de fotograma inválidas sensor.QQQQCIF / QQQCIF / QQQQSIF / QQQSIF / HQQQQVGA / HVGA foram removidas (#261). Os scripts que utilizam estas constantes devem mudar para uma resolução suportada.

Commits: 35ab0a26f

find_qrcodes() removido do OpenMV Cam M4 (minor)

image.find_qrcodes() já não é compilado nas placas de classe M4 (OpenMV 2). Use uma placa OpenMV 3 (M7) ou outra funcionalidade de código para deteção de QR em hardware M4. As outras placas não são afetadas.

Commits: 7dff089e6

MicroPython atualizado para 1.9.2 (behavior)

O núcleo MicroPython integrado foi atualizado para 1.9.2. O comportamento da biblioteca padrão e da linguagem segue o MicroPython 1.9.2 upstream — verifique novamente os scripts que dependem de comportamento específico da versão. Notavelmente, um slice de imagem com um passo diferente de 1 gera agora OSError em vez de NotImplementedError.

Commits: 11bed4b99

Lista de verificação de migração

Para uma migração limpa para v2.6.0, o trabalho típico é:

  1. Reescrever as chamadas a find_line_segments() para os parâmetros LSD (merge_distance / max_theta_diff) e mover esse processamento para fora do M4 (a reformulação LSD).

  2. Substituir as constantes de tamanho de fotograma removidas por uma resolução suportada (a remoção dos tamanhos de fotograma).

  3. Mover a deteção de códigos QR do M4 para uma placa M7 (a alteração de find_qrcodes).

  4. Revalidar o comportamento específico da versão contra o MicroPython 1.9.2 (a atualização do MicroPython).

Todos os outros scripts funcionam sem alterações.