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/selectsono stati rimossi in favore dipyb/machinedi MicroPython.Modulo
image—Image()/HaarCascade()/ i descrittori sono ora nel moduloimage.time.clock— il clock del frame rate è stato spostato nel modulotime.Cascade di Haar integrate —
HaarCascade("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 subscriptimg[i]; cascade di Haar integrate su flash (HaarCascade("frontalface")/HaarCascade("eye")) e una keywordstages=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 framesizeQQVGA2.mlx—mlx.read(type)con outputmlx.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
MemoryErrorinvece diOSError; 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 difast_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 è:
Sostituisci i moduli personalizzati
gpio/led/spi/uart/socket/wlan/file/selectconpyb/machinedi MicroPython (la rimozione dei moduli personalizzati).Usa
import imagee anteponiimage.aImage()/HaarCascade()(lo spostamento del modulo image).Usa
import timeeclock = time.clock()(lo spostamento del clock).Aggiungi
/flash//sdasys.pathesplicitamente se importavi moduli helper per nome nudo (la modifica di sys.path).
Tutti gli altri script funzionano senza modifiche.