v1.1.0¶
A v1.1.0 é o lançamento fundamental de arquitetura: ela abandona os primeiros módulos de periféricos personalizados em favor dos built-ins padrão do MicroPython, move a API de imagem para o módulo image e o relógio de taxa de quadros para o time, e adiciona cascatas Haar embutidas, get_pixel() / set_pixel(), suporte à placa OpenMV 2 e depuração via USB-CDC. É um lançamento fortemente incompatível e definidor de API — leia as mudanças incompatíveis abaixo.
Destaques¶
Built-ins do MicroPython — os módulos personalizados
gpio/led/spi/socket/wlan/uart/file/selectforam removidos em favor depyb/machinedo MicroPython.Módulo
image—Image()/HaarCascade()/ descritores agora estão no móduloimage.time.clock— o relógio de taxa de quadros foi movido para o módulotime.Cascatas Haar embutidas —
HaarCascade("frontalface")/HaarCascade("eye")(sem necessidade de arquivo).Suporte à placa OpenMV 2 e depuração via USB-CDC.
Incompatível: a estrutura de módulos foi redefinida — veja as mudanças incompatíveis.
Novos recursos¶
Imagem — adicionados
Image.get_pixel(x, y)/set_pixel()e acesso a pixels por índiceimg[i]; cascatas Haar embutidas na flash (HaarCascade("frontalface")/HaarCascade("eye")) e uma palavra-chavestages=para limitar os estágios da cascata;draw_string()funciona em imagens em escala de cinza.Sensor — adicionados
sensor.set_colorbar(),sensor.set_saturation()e o tamanho de quadroQQVGA2.mlx—mlx.read(type)com saídamlx.RAINBOW/mlx.GRAYSCALE.Depuração — implementada depuração via USB CDC, uma consulta de firmware
fw_version(), firmware por placa (OpenMV 1 / OpenMV 2) e scripts de autoteste / barra de cores; erros fatais/de parsing são registrados na flash.
Outras mudanças e melhorias¶
Falta de memória agora levanta
MemoryErrorem vez deOSError; os scripts executam com re-lançamento de exceções para que os erros sejam impressos em vez de travar; a taxa de transmissão serial é configurável (padrão 921600); um sistema de arquivos em flash maior; o clock de pixel do sensor foi reduzido para 54 MHz para estabilidade de captura;sensor.reset()depende apenas de um soft reset do sensor.
Correções de bugs¶
Corrigidos a correspondência de modelos, o
find_features()que repetia o primeiro objeto, o acesso atômico a registradores SCCB/I2C, a detecção de chip do cartão SD, o mapeamento de pinos do soft-I2C, a precisão defast_cbrtf/ cor LAB e o uso de memória da imagem integral / filtro de mediana na OpenMV 1 / 2.
Suporte a hardware e placas¶
Suporte à placa OpenMV 2 (STM32F427) (e ao design de hardware da OpenMV 3); MCO usado como clock do sensor na OpenMV 2.
Mudanças incompatíveis na API¶
Quebras de API visíveis ao usuário entre a v1.0.3-beta e a v1.1.0. Escopo: C-modules 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.
behavior — mesma API, resultados diferentes; reverifique scripts ajustados.
As mudanças são agrupadas por impacto nessa ordem. Se você só quer portar seu código, vá direto para o checklist de migração no final. Cada hash de commit liga ao seu diff no GitHub.
Módulos de periféricos personalizados removidos (major)¶
Os primeiros módulos personalizados clock / file / gpio / led / select / socket / spi / wlan / uart foram removidos em favor dos periféricos embutidos pyb / machine do MicroPython. Porte os scripts para os equivalentes padrão do MicroPython (por exemplo, pyb.Pin / pyb.LED / pyb.SPI / pyb.UART).
Commits: 6d2fafa94
API de imagem movida para o módulo image (major)¶
Image(), HaarCascade() e as funções de salvar/carregar de descritores não são mais built-ins isolados — elas vivem no novo módulo image. Os scripts devem fazer import image e usar image.Image / image.HaarCascade().
Commits: 54288c535
Relógio de taxa de quadros movido para time (major)¶
O módulo independente clock foi removido; o relógio de taxa de quadros agora vive em time. Use import time e clock = time.clock() — o objeto retornado ainda fornece .tick() / .fps() / .avg() / .reset().
Commits: a8928ca3b
/flash e /sd não são mais adicionados ao sys.path (behavior)¶
Os rótulos de volume / diretório raiz foram corrigidos e /flash e /sd não são mais anexados automaticamente ao sys.path. Scripts que importavam módulos auxiliares por nome simples a partir dessas localizações precisam adicionar o caminho explicitamente (ou colocar os módulos onde são encontrados).
Commits: 09e77b5da
Checklist de migração¶
Para um port limpo para a v1.1.0, o trabalho típico é:
Substituir os módulos personalizados
gpio/led/spi/uart/socket/wlan/file/selectporpyb/machinedo MicroPython (a remoção dos módulos personalizados).import imagee prefixarImage()/HaarCascade()comimage.(a mudança do módulo image).Usar
import timeeclock = time.clock()(a mudança do clock).Adicionar
/flash//sdaosys.pathexplicitamente se você importava módulos auxiliares por nome simples (a mudança no sys.path).
Todos os outros scripts executam sem alterações.