v1.1.0

v1.1.0 este versiunea de arhitectură fundamentală: renunță la modulele periferice personalizate timpurii în favoarea funcțiilor încorporate standard MicroPython, mută API-ul de imagistică în modulul image și ceasul ratei de cadre în time și adaugă cascade Haar încorporate, get_pixel() / set_pixel(), suport pentru placa OpenMV 2 și depanare prin USB-CDC. Este o versiune puternic incompatibilă, care definește API-ul — citiți modificările incompatibile de mai jos.

Repere

  • Funcții încorporate MicroPython — modulele personalizate gpio / led / spi / socket / wlan / uart / file / select au fost eliminate în favoarea pyb / machine din MicroPython.

  • Modulul imageImage() / HaarCascade() / descriptorii se află acum în modulul image.

  • time.clock — ceasul ratei de cadre a fost mutat în modulul time.

  • Cascade Haar încorporateHaarCascade("frontalface") / HaarCascade("eye") (nu este nevoie de fișier).

  • Suport pentru placa OpenMV 2 și depanare prin USB-CDC.

  • Incompatibil: structura modulelor a fost redefinită — vedeți modificările incompatibile.

Funcționalități noi

  • Image — s-au adăugat Image.get_pixel(x, y) / set_pixel() și acces la pixeli prin indexare img[i]; cascade Haar încorporate în memoria flash (HaarCascade("frontalface") / HaarCascade("eye")) și un cuvânt-cheie stages= pentru a limita etapele cascadei; draw_string() funcționează pe imagini în tonuri de gri.

  • Sensor — s-au adăugat sensor.set_colorbar(), sensor.set_saturation() și dimensiunea de cadru QQVGA2.

  • mlxmlx.read(type) cu ieșire mlx.RAINBOW / mlx.GRAYSCALE.

  • Depanare — s-a implementat depanarea prin USB CDC, o interogare fw_version() a firmware-ului, firmware per placă (OpenMV 1 / OpenMV 2) și scripturi de autotestare / colorbar; erorile fatale/de parsare sunt înregistrate în memoria flash.

Alte modificări și îmbunătățiri

  • Lipsa de memorie ridică acum MemoryError în loc de OSError; scripturile rulează cu reridicarea excepțiilor astfel încât erorile se afișează în loc să provoace blocaje; rata baud serială este configurabilă (implicit 921600); un sistem de fișiere flash mai mare; ceasul de pixeli al senzorului a fost coborât la 54 MHz pentru stabilitatea capturii; sensor.reset() se bazează doar pe o resetare software a senzorului.

Corecții de erori

  • S-au corectat potrivirea de șabloane, repetarea primului obiect de către find_features(), accesul atomic la registre SCCB/I2C, detectarea cipului cardului SD, maparea pinilor soft-I2C, precizia fast_cbrtf / a culorilor LAB și utilizarea memoriei pentru imagini integrale / filtru median pe OpenMV 1 / 2.

Suport pentru hardware și plăci

  • Suport pentru placa OpenMV 2 (STM32F427) (și designul hardware OpenMV 3); MCO folosit ca ceas al senzorului pe OpenMV 2.

Modificări incompatibile ale API-ului

Modificări vizibile pentru utilizator ale API-ului între v1.0.3-beta și v1.1.0. Domeniu: module C Python din modules/ și biblioteci Python din scripts/libraries/.

Fiecare modificare este etichetată cu impactul său:

  • major — afectează majoritatea scripturilor care foloseau funcționalitatea; va trebui să portați codul.

  • comportament — același API, rezultate diferite; reverificați scripturile reglate.

Modificările sunt grupate după impact în această ordine. Dacă doriți doar să vă portați codul, săriți la lista de verificare pentru migrare de la final. Fiecare hash de commit duce la diff-ul său de pe GitHub.

Module periferice personalizate eliminate (major)

Modulele personalizate timpurii clock / file / gpio / led / select / socket / spi / wlan / uart au fost eliminate în favoarea perifericelor încorporate pyb / machine din MicroPython. Portați scripturile la echivalentele standard MicroPython (de ex. pyb.Pin / pyb.LED / pyb.SPI / pyb.UART).

Commit-uri: 6d2fafa94

API-ul de imagistică mutat în modulul image (major)

Image(), HaarCascade() și funcțiile de salvare/încărcare de descriptori nu mai sunt funcții încorporate simple — se află în noul modul image. Scripturile trebuie să facă import image și să folosească image.Image / image.HaarCascade().

Commit-uri: 54288c535

Ceasul ratei de cadre mutat în time (major)

Modulul autonom clock a fost eliminat; ceasul ratei de cadre se află acum în time. Folosiți import time și clock = time.clock() — obiectul returnat oferă în continuare .tick() / .fps() / .avg() / .reset().

Commit-uri: a8928ca3b

/flash și /sd nu mai sunt adăugate la sys.path (comportament)

Etichetele de volum / directorul rădăcină au fost corectate, iar /flash și /sd nu mai sunt adăugate automat la sys.path. Scripturile care importau module ajutătoare după numele simplu din acele locații trebuie să adauge calea în mod explicit (sau să plaseze modulele acolo unde sunt găsite).

Commit-uri: 09e77b5da

Lista de verificare pentru migrare

Pentru o portare curată la v1.1.0, munca obișnuită este:

  1. Înlocuiți modulele personalizate gpio / led / spi / uart / socket / wlan / file / select cu pyb / machine din MicroPython (eliminarea modulelor personalizate).

  2. import image și prefixați Image() / HaarCascade() cu image. (mutarea modulului image).

  3. Folosiți import time și clock = time.clock() (mutarea ceasului).

  4. Adăugați /flash / /sd la sys.path în mod explicit dacă importați module ajutătoare după numele simplu (modificarea sys.path).

Toate celelalte scripturi rulează neschimbate.