v1.1.0

v1.1.0 è la release di architettura fondante: abbandona i primi moduli per periferiche personalizzati in favore dei built-in standard di MicroPython, sposta l’API di imaging nel modulo image e il clock del frame rate in time, e aggiunge cascade di Haar integrate, get_pixel() / set_pixel(), il supporto per la scheda OpenMV 2 e il debug tramite USB-CDC. È una release fortemente incompatibile e che definisce l’API — leggi le modifiche incompatibili qui sotto.

In evidenza

  • Built-in di MicroPython — i moduli personalizzati gpio / led / spi / socket / wlan / uart / file / select sono stati rimossi in favore di pyb / machine di MicroPython.

  • Modulo imageImage() / HaarCascade() / i descrittori sono ora nel modulo image.

  • time.clock — il clock del frame rate è stato spostato nel modulo time.

  • Cascade di Haar integrateHaarCascade("frontalface") / HaarCascade("eye") (non serve alcun file).

  • Supporto per la scheda OpenMV 2 e debug tramite USB-CDC.

  • Incompatibile: la struttura dei moduli è stata ridefinita — vedi le modifiche incompatibili.

Nuove funzionalità

  • Image — aggiunti Image.get_pixel(x, y) / set_pixel() e l’accesso ai pixel tramite subscript img[i]; cascade di Haar integrate su flash (HaarCascade("frontalface") / HaarCascade("eye")) e una keyword stages= per limitare gli stadi della cascade; draw_string() funziona sulle immagini in scala di grigi.

  • Sensor — aggiunte sensor.set_colorbar(), sensor.set_saturation() e la framesize QQVGA2.

  • mlxmlx.read(type) con output mlx.RAINBOW / mlx.GRAYSCALE.

  • Debug — implementato il debug tramite USB CDC, una query fw_version() del firmware, firmware specifico per scheda (OpenMV 1 / OpenMV 2) e script di self-test / colorbar; gli errori fatali/di parsing vengono registrati su flash.

Altre modifiche e miglioramenti

  • L’esaurimento della memoria ora solleva MemoryError invece di OSError; gli script vengono eseguiti rilanciando le eccezioni così che gli errori vengano stampati invece di causare un crash; il baud rate della seriale è configurabile (default 921600); un filesystem flash più grande; il pixel clock del sensore è stato abbassato a 54 MHz per la stabilità dell’acquisizione; sensor.reset() si affida solo a un soft reset del sensore.

Correzioni di bug

  • Corretti il template matching, find_features() che ripeteva il primo oggetto, l’accesso atomico ai registri SCCB/I2C, il rilevamento del chip della scheda SD, la mappatura dei pin soft-I2C, l’accuratezza di fast_cbrtf / del colore LAB, e l’uso di memoria per immagini integrali / filtro mediano su OpenMV 1 / 2.

Supporto hardware e schede

  • Supporto per la scheda OpenMV 2 (STM32F427) (e progetto hardware OpenMV 3); MCO usato come clock del sensore sulla OpenMV 2.

Modifiche incompatibili dell’API

Modifiche dell’API visibili all’utente tra v1.0.3-beta e v1.1.0. Ambito: moduli C Python in modules/ e librerie Python in scripts/libraries/.

Ogni modifica è contrassegnata con il suo impatto:

  • major — interessa la maggior parte degli script che usavano la funzionalità; dovrai portare il codice.

  • behavior — stessa API, risultati diversi; ricontrolla gli script ottimizzati.

Le modifiche sono raggruppate per impatto in quest’ordine. Se vuoi solo portare il tuo codice, vai alla checklist di migrazione alla fine. Ogni hash di commit rimanda al suo diff su GitHub.

Moduli per periferiche personalizzati rimossi (major)

I primi moduli personalizzati clock / file / gpio / led / select / socket / spi / wlan / uart sono stati rimossi in favore delle periferiche integrate pyb / machine di MicroPython. Porta gli script agli equivalenti standard di MicroPython (ad es. pyb.Pin / pyb.LED / pyb.SPI / pyb.UART).

Commit: 6d2fafa94

API di imaging spostata nel modulo image (major)

Image(), HaarCascade() e le funzioni di salvataggio/caricamento dei descrittori non sono più built-in nudi — risiedono nel nuovo modulo image. Gli script devono usare import image e image.Image / image.HaarCascade().

Commit: 54288c535

Clock del frame rate spostato in time (major)

Il modulo standalone clock è stato rimosso; il clock del frame rate ora risiede in time. Usa import time e clock = time.clock() — l’oggetto restituito fornisce ancora .tick() / .fps() / .avg() / .reset().

Commit: a8928ca3b

/flash e /sd non vengono più aggiunti a sys.path (behavior)

Le etichette dei volumi / la directory radice sono state corrette e /flash e /sd non vengono più aggiunti automaticamente a sys.path. Gli script che importavano moduli helper per nome nudo da quelle posizioni devono aggiungere il percorso esplicitamente (o collocare i moduli dove vengono trovati).

Commit: 09e77b5da

Checklist di migrazione

Per un porting pulito a v1.1.0 il lavoro tipico è:

  1. Sostituisci i moduli personalizzati gpio / led / spi / uart / socket / wlan / file / select con pyb / machine di MicroPython (la rimozione dei moduli personalizzati).

  2. Usa import image e anteponi image. a Image() / HaarCascade() (lo spostamento del modulo image).

  3. Usa import time e clock = time.clock() (lo spostamento del clock).

  4. Aggiungi /flash / /sd a sys.path esplicitamente se importavi moduli helper per nome nudo (la modifica di sys.path).

Tutti gli altri script funzionano senza modifiche.