v1.1.0

v1.1.0 é a versão de arquitetura fundacional: elimina os módulos periféricos personalizados iniciais em favor dos built-ins do MicroPython, move a API de imagem para o módulo image e o relógio de taxa de fotogramas para time, e adiciona cascatas Haar integradas, get_pixel() / set_pixel(), suporte à placa OpenMV 2 e depuração por USB-CDC. É uma versão com muitas quebras de compatibilidade que define a API — leia as alterações de quebra de compatibilidade abaixo.

Destaques

  • Built-ins do MicroPython — os módulos personalizados gpio / led / spi / socket / wlan / uart / file / select foram removidos em favor dos módulos pyb / machine do MicroPython.

  • Módulo imageImage() / HaarCascade() / os descritores estão agora no módulo image.

  • time.clock — o relógio de taxa de fotogramas foi movido para o módulo time.

  • Cascatas Haar integradasHaarCascade("frontalface") / HaarCascade("eye") (sem necessidade de ficheiro).

  • Suporte à placa OpenMV 2 e depuração por USB-CDC.

  • Quebra de compatibilidade: a estrutura de módulos foi redefinida — consulte as alterações de quebra de compatibilidade.

Novas funcionalidades

  • Image — adicionados Image.get_pixel(x, y) / set_pixel() e acesso subscrito a pixels via img[i]; cascatas Haar integradas em flash (HaarCascade("frontalface") / HaarCascade("eye")) e um parâmetro stages= para limitar as fases da cascata; draw_string() funciona em imagens em escala de cinzentos.

  • Sensor — adicionadas sensor.set_colorbar(), sensor.set_saturation() e o tamanho de fotograma QQVGA2.

  • mlxmlx.read(type) com saída mlx.RAINBOW / mlx.GRAYSCALE.

  • Depuração — implementada depuração por USB CDC, consulta de versão de firmware fw_version(), firmware por placa (OpenMV 1 / OpenMV 2), e scripts de autoteste / barra de cor; erros fatais/de análise são registados em flash.

Outras alterações e melhorias

  • Falta de memória levanta agora MemoryError em vez de OSError; os scripts são executados com re-lançamento de exceções para que os erros sejam impressos em vez de causar falha; a taxa de baud série é configurável (padrão 921600); sistema de ficheiros em flash maior; o relógio de pixel do sensor foi reduzido para 54 MHz para estabilidade de captura; sensor.reset() depende apenas de um reset suave do sensor.

Correções de erros

  • Corrigidos o template matching, find_features() a repetir o primeiro objeto, acesso atómico a registos SCCB/I2C, deteção de cartão SD, mapeamento de pinos soft-I2C, fast_cbrtf / precisão de cor LAB, e o uso de memória pelo integral-image / filtro mediano no OpenMV 1 / 2.

Hardware e suporte a placas

  • Suporte à placa OpenMV 2 (STM32F427) (e design de hardware do OpenMV 3); MCO utilizado como relógio do sensor no OpenMV 2.

Alterações de quebra de compatibilidade da API

Alterações de API visíveis pelo utilizador entre v1.0.3-beta e v1.1.0. Âmbito: módulos C em Python em modules/ e bibliotecas Python em scripts/libraries/.

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

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

  • behavior — mesma API, resultados diferentes; verifique novamente os scripts ajustados.

As alterações estão agrupadas por impacto nessa ordem. Se pretende apenas portar o seu código, aceda ao guia de migração no final. Cada hash de commit é uma ligação para o respetivo diff no GitHub.

Módulos periféricos personalizados removidos (major)

Os módulos personalizados iniciais clock / file / gpio / led / select / socket / spi / wlan / uart foram removidos em favor dos periféricos integrados 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 guardar/carregar descritores deixaram de ser built-ins simples — passam a residir no novo módulo image. Os scripts devem usar import image e utilizar image.Image / image.HaarCascade().

Commits: 54288c535

Relógio de taxa de fotogramas movido para time (major)

O módulo autónomo clock foi removido; o relógio de taxa de fotogramas passa a residir em time. Use import time e clock = time.clock() — o objeto devolvido continua a disponibilizar .tick() / .fps() / .avg() / .reset().

Commits: a8928ca3b

/flash e /sd deixaram de ser adicionados a sys.path (behavior)

As etiquetas de volume / diretório raiz foram corrigidas e /flash e /sd deixaram de ser adicionados automaticamente a sys.path. Os scripts que importavam módulos auxiliares pelo nome simples a partir dessas localizações devem adicionar o caminho explicitamente (ou colocar os módulos onde são encontrados).

Commits: 09e77b5da

Guia de migração

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

  1. Substituir os módulos personalizados gpio / led / spi / uart / socket / wlan / file / select pelos módulos pyb / machine do MicroPython (remoção dos módulos personalizados).

  2. import image e prefixar Image() / HaarCascade() com image. (a mudança do módulo image).

  3. Usar import time e clock = time.clock() (a mudança do relógio).

  4. Adicionar /flash / /sd a sys.path explicitamente se importou módulos auxiliares pelo nome simples (a alteração do sys.path).

Todos os outros scripts funcionam sem alterações.