v2.7.0¶
v2.7.0 moderniza a API de ganho automático / exposição automática / balanço de branco do sensor para unidades físicas (dB / microssegundos), reformula a correlação de fase find_displacement() (adicionando rotação/escala) e acrescenta get_similarity() (SSIM), chrominvar() / illuminvar(), buffers de fotograma extra e uma biblioteca MQTT. É uma versão com muitas alterações incompatíveis — consulte as alterações incompatíveis abaixo.
Destaques¶
API de sensor moderna —
set_auto_gain()/set_auto_exposure()/set_auto_whitebal()utilizam agora dB / microssegundos, com os correspondentesget_gain_db()/get_exposure_us()/get_rgb_gain_db().Correlação de fase —
find_displacement()reformulado com rotação / escala efind_rotscale()/linpolar()/logpolar().SSIM — similaridade estrutural
image.get_similarity().Buffers de fotograma extra —
sensor.alloc_extra_fb()/dealloc_extra_fb().MQTT — uma nova biblioteca MQTT.
Incompatível: a API de ganho/exposição/balanço de branco do sensor,
find_displacement()/ tamanhos de fotograma FFT,find_number(), as ferramentas de firmware WINC ez_rotation()dos AprilTags foram todos alterados — consulte as alterações incompatíveis.
Novas funcionalidades¶
Sensor — adicionados
sensor.get_gain_db(),sensor.get_exposure_us(),sensor.get_rgb_gain_db(), uma palavra-chavegain_db_ceilingemset_auto_gain(), suportehmirror/vflipno MT9V034 esensor.alloc_extra_fb()/sensor.dealloc_extra_fb()para buffers de fotograma extra em RAM.Imagem — adicionados
remove_shadows(),min()/max()(diferenciação de fotogramas),get_similarity()(SSIM) com um exemplo de similaridade estrutural,chrominvar()/illuminvar(),find_rotscale(),linpolar()/logpolar(), palavras-chave threshold / offset / invert nos filtros adaptativosmean()/mode()/median()/midpoint(),len()/ indexação no objeto de pontos-chave e um acessor.match()no objeto de correspondência de pontos-chave.Bibliotecas / rede — adicionada uma biblioteca MQTT (com um exemplo de MQTT WiFi) e um modo
network.WINC.MODE_BSPpara programar firmware WINC via o UART de depuração.Exemplos — adicionados scripts de baixo consumo
deep_sleep.py/stop_mode.py, fluxo ótico avançado e scripts de exemplo linear/log-polar; o firmware analisa agorauart.inino arranque para ativar um REPL UART.
Outras alterações e melhorias¶
get_regression()ganhou palavras-chavearea_threshold/pixels_thresholde uma regressão robusta mais rápida (para seguimento de linha / corrida);get_pixel()suporta agora imagens Bayer; adicionada base para STM32H7 (cabeçalhos CMSIS / HAL / bootloader — a placa H7 ainda não é utilizável); firmware WINC1500 integrado atualizado (19.4.4 / 19.5.2).
Correções de erros¶
Processamento de imagem:
Corrigido o erro de acesso fora dos limites na pesquisa em diamante de
find_template(), a corrupção delogpolar/linpolare o comportamento errático deilluminvar()com valores de cor próximos de zero.
Sensor e sistema:
Corrigidos erros no controlo de ganho automático, restaurado o tamanho de
MAIN_FBemsnapshot()(para quecopy_to_fbcom uma resolução diferente, redimensionamento do FB e pooling de fluxo ótico funcionem novamente), o tempo limite degethostbynamedo WINC, opydfuclear-status no bootloader do H7 e os modos de suspensão/espera de baixo consumo.
Hardware e suporte de placas¶
STM32H7 — base (CMSIS / HAL / bootloader); a placa OpenMV H7 ainda não é utilizável nesta versão.
WINC1500 — firmware integrado atualizado.
Alterações incompatíveis de API¶
Alterações de API visíveis ao utilizador entre v2.6.0 e v2.7.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.
sensor.set_auto_gain() reformulado para dB (major)¶
sensor.set_auto_gain() já não aceita a palavra-chave inteira value= e já não retorna True / False. Use sensor.set_auto_gain(False, gain_db=...) (um valor dB float), leia-o de volta com o novo sensor.get_gain_db() e envolva a chamada em try / except pois a falha gera agora ValueError.
Commits: b906c5f19
sensor.set_auto_exposure() reformulado para microssegundos (major)¶
sensor.set_auto_exposure() já não aceita a palavra-chave inteira value= e já não retorna True / False. Use sensor.set_auto_exposure(False, exposure_us=...), leia-o de volta com o novo sensor.get_exposure_us() e trate o ValueError gerado em caso de falha.
Commits: 7be0a7a18
find_displacement() / tamanhos de fotograma FFT reformulados (major)¶
A correlação de fase foi reformulada. image.find_displacement() retorna agora um objeto de deslocamento (com x_translation() / y_translation() — anteriormente x_offset / y_offset — mais rotation() / scale() e novas palavras-chave logpolar / fix_rotation_scale); o objeto de rot-escala separado foi removido e find_rotscale() adicionado. As constantes de tamanho de fotograma FFT foram renomeadas/removidas: sensor.B40x30 foi removido completamente, e sensor.B64x32 / B64x64 foram renomeados para maiúsculas sensor.B64X32 / B64X64 (com novos B128X64 / B128X128).
sensor.set_auto_whitebal() reformulado para dB (minor)¶
sensor.set_auto_whitebal() substituiu a palavra-chave inteira value=[r, g, b] por rgb_gain_db=[r, g, b] (dB float) e retorna agora None (gerando ValueError em caso de falha) em vez de True / False. Use o novo sensor.get_rgb_gain_db() para ler os ganhos de volta.
Commits: 30ecbdc4f
set_hmirror() / set_vflip() retornam None (minor)¶
sensor.set_hmirror() e sensor.set_vflip() retornam agora None e geram ValueError em caso de falha em vez de retornar um estado True / False. Remova qualquer código que ramifique com base no valor de retorno destes.
Commits: aeb023804
As ferramentas de firmware WINC requerem um caminho de ficheiro (minor)¶
As ferramentas de firmware de network.WINC foram alteradas: wlan.fw_dump() / wlan.fw_update() requerem agora um argumento obrigatório de caminho para o ficheiro de firmware e o WINC é aberto num modo de programação (network.WINC(mode=...)). Atualize as chamadas sem argumento para passar um caminho (por exemplo, wlan.fw_update("/winc_19_5_2.bin")).
Commits: fcc3b0b9c
image.find_number() requer um ROI de 28x28 (behavior)¶
image.find_number() (LeNet) requer agora um ROI exatamente de 28x28 que caiba dentro da imagem e gera um erro caso contrário (em vez de executar num ROI arbitrário/imagem completa). Passe um roi=(x, y, 28, 28) explícito.
Commits: 4d09a13f3
Sinal de z_rotation() do AprilTag invertido (behavior)¶
O z_rotation() do AprilTag (e o rotation() relacionado) utiliza agora uma convenção de coordenadas com mão direita, pelo que o ângulo retornado é negado em relação às versões anteriores. Os scripts que dependem do sinal antigo devem inverter o valor ou ajustar os seus cálculos de ângulo.
Commits: 7673aaf74
Lista de verificação de migração¶
Para uma migração limpa para v2.7.0, o trabalho típico é:
Portar
set_auto_gain()paragain_db=+get_gain_db()e tratarValueError(a reformulação do ganho automático).Portar
set_auto_exposure()paraexposure_us=+get_exposure_us()(a reformulação da exposição automática).Atualizar
find_displacement()para o objeto de deslocamento e renomear as constantes de tamanho de fotograma FFT (a reformulação de find_displacement).Portar
set_auto_whitebal()parargb_gain_db=+get_rgb_gain_db()(a reformulação do balanço de branco) e parar de verificar o valor de retorno deset_hmirror()/set_vflip()(a alteração de espelho/inversão).Passar um caminho de firmware para as ferramentas WINC
fw_*(a alteração das ferramentas WINC).Passar um
roide 28x28 parafind_number()(a alteração de find_number) e ajustar o cálculo do ângulo AprilTag para o sinal invertido dez_rotation()(a alteração de z_rotation).
Todos os outros scripts funcionam sem alterações.