v2.6.0

A v2.6.0 atualiza o núcleo para o MicroPython 1.9.2, muda find_line_segments() para o algoritmo LSD, adiciona suporte ao sensor de obturador global MT9V034, correção de perspectiva com image.rotation_corr(), sensor.sleep(), salvamento de imagens raw e a base para as placas OpenMV 4. O comportamento de find_line_segments(), de vários framesizes e do MicroPython mudou — leia as mudanças incompatíveis abaixo.

Destaques

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

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

  • Suporte ao sensor de obturador global MT9V034.

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

  • sensor.sleep() modo de soft sleep e salvamento de imagens raw (não comprimidas).

  • Incompatível: os parâmetros de find_line_segments(), várias constantes de framesize e o comportamento do MicroPython mudaram — veja as mudanças incompatíveis.

Novos recursos

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

  • sensor.sleep(enable) — coloca a câmera em um modo de soft sleep (com um exemplo de modo de sleep).

  • Imagens rawimage.save() agora pode gravar imagens raw (não comprimidas).

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

  • Adicionado um exemplo lens_correction.py para image.lens_corr() e arquivos de suporte às placas OpenMV 4 (base de configuração de placa / bootloader / linker).

Outras mudanças e melhorias

  • Atualizou o MicroPython incluído para 1.9.2 (encanamento da porta 1.9, oofatfs); reescreveu find_line_segments.py para a nova API LSD (correção de lente desativada por padrão); atualizou a API openmv do lado do host (init(portname) / exec_script / stop_script); reduziu o clock do sensor na OpenMV Cam M4 (menor FPS máximo na M4); o botão Stop da IDE agora usa uma exceção forçada e dura para interromper scripts de forma mais confiável.

Correções de bugs

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

Hardware e suporte a placas

  • Sensor de obturador global MT9V034.

  • OpenMV 4 — arquivos de suporte à placa (base).

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

Mudanças incompatíveis de API

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

Cada mudança é marcada com seu impacto:

  • major — afeta a maioria dos scripts que usavam o recurso; você precisará portar o código.

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

  • behavior — mesma API, resultados diferentes; reverifique 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 seu diff no GitHub.

find_line_segments() migrou para LSD (major)

image.find_line_segments() foi reescrito para usar o algoritmo Line Segment Detector (LSD). Os antigos parâmetros 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)). Ele também não está mais disponível em placas da classe M4 (OpenMV 2).

Commits: 5a3153c8b, cbe2a4aeb

Constantes de framesize inválidas removidas (minor)

As constantes de framesize inválidas sensor.QQQQCIF / QQQCIF / QQQQSIF / QQQSIF / HQQQQVGA / HVGA foram removidas (#261). Scripts que as usam devem mudar para uma resolução suportada.

Commits: 35ab0a26f

find_qrcodes() removido na OpenMV Cam M4 (minor)

image.find_qrcodes() não é mais compilado em placas da classe M4 (OpenMV 2). Use uma placa OpenMV 3 (M7) ou outro recurso de código para detecção de QR em hardware M4. Outras placas não são afetadas.

Commits: 7dff089e6

MicroPython atualizado para 1.9.2 (behavior)

O núcleo MicroPython incluído foi atualizado para 1.9.2. O comportamento da biblioteca padrão e da linguagem segue o MicroPython 1.9.2 upstream — reverifique scripts que dependem de comportamento específico de versão. Notavelmente, um fatiamento de imagem com um passo diferente de 1 agora lança OSError em vez de NotImplementedError.

Commits: 11bed4b99

Lista de verificação de migração

Para um port limpo para a v2.6.0, o trabalho típico é:

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

  2. Substituir as constantes de framesize removidas por uma resolução suportada (a remoção de framesizes).

  3. Mover a detecção de QR codes da M4 para uma placa M7 (a mudança de find_qrcodes).

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

Todos os outros scripts rodam sem alterações.