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 LSD —
find_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 exemplorotation_correction.py.sensor.sleep(enable)— coloca a câmara em modo de suspensão suave (com um exemplo de modo de suspensão).Imagens brutas —
image.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.pyparaimage.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.pyreescrito para a nova API LSD (correção de lente desativada por predefinição); APIopenmvdo 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 atualizadoqrcodes_with_lens_corr.pypara 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).
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 é:
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).Substituir as constantes de tamanho de fotograma removidas por uma resolução suportada (a remoção dos tamanhos de fotograma).
Mover a deteção de códigos QR do M4 para uma placa M7 (a alteração de find_qrcodes).
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.