v1.2.0¶
v1.2.0 este o versiune fundamentală, foarte mare, care construiește cea mai mare parte a API-ului clasic de imagistică OpenMV: metodele de desenare, operațiile binare / de morfologie, descriptorii de puncte-cheie (FAST / FREAK / LBP), conversiile de culoare și image.statistics, intrările/ieșirile de fișiere BMP / PPM / JPEG, modulele lcd, mjpeg, gif și modulul termic mlx, camera OV7725 și numeroase controale sensor. Unele comportamente de bază ale sensor s-au schimbat — citiți modificările incompatibile de mai jos.
Aspecte importante¶
API de desenare —
draw_line()/draw_rectangle()/draw_circle()/draw_string()/draw_cross()/draw_keypoints().Binar / morfologie —
binary(),invert(),and/or/xor/...,erode()/dilate()/morph(),negate()/difference().Puncte-cheie — descriptori FAST / FREAK / LBP cu
match_descriptor()/save_descriptor()/load_descriptor().Suport pentru camera OV7725;
image.statistics; intrări/ieșiri de fișiere BMP/PPM/JPEG.Incompatibil: comportamentul
sensor.reset(),sensor.snapshot()șisensor.set_pixformat()s-a schimbat — consultați modificările incompatibile.
Caracteristici noi¶
Desenare — s-au adăugat
image.draw_line()/draw_rectangle()/draw_circle()/draw_string()/draw_cross()/draw_keypoints()cu argumente de tip cuvânt-cheie (culoare, grosime, …).Binar / morfologie — s-au adăugat
image.binary(),invert(),and()/nand()/or()/nor()/xor()/xnor(),erode()/dilate()/morph(),negate()/difference(),pixels(),centroid(),orientation_radians()/orientation_degrees()șiwidth()/height()/format().Puncte-cheie / descriptori — extragere de puncte-cheie FAST prin
find_keypoints(), unmatch_descriptor()unificat șisave_descriptor()/load_descriptor()pentru FREAK / LBP, plus o cascadă Haar/LBP pentru fețe din profil.Culoare / statistici —
image.statisticsși funcții de conversie a culorilor (rgb_to_lab/lab_to_rgb/rgb_to_grayscale/grayscale_to_rgb).Intrări/ieșiri de fișiere — încărcare și salvare BMP / PPM (P2/P3/P5/P6) / JPEG (inclusiv JPEG în tonuri de gri și subeșantionare cromatică 4:2:0 / 4:2:2).
Module — noul modul
lcd(shield LCD),mjpeg(înregistrare video),gifcolor (cuGif.loop()) și modulele de cameră termicămlx, fiecare cu scripturi de exemplu.Senzor — s-au adăugat
sensor.get_id()(+ constantele PID OV9650/OV2640/OV7725),sensor.set_special_effect()(constantele SDE_*),sensor.set_image_filter()(FILTER_BW / FILTER_SKIN), dimensiunea de cadruHQVGAșiimage.set_pixel(x, y, …).WiFi — s-a adăugat driverul WiFi ATWINC1500 și bazele BSP pentru OpenMV 1/2, plus un exemplu BLE.
Alte modificări și îmbunătățiri¶
Tamponul de cadre (frame buffer) este acum comprimat JPEG înainte de transmiterea către OpenMV IDE (lățime de bandă mai mică); compresia JPEG se face pe loc; zoom-ul H/V al OV7725 permite scalare arbitrară; detectare îmbunătățită (mai rapidă) a fețelor Haar care rulează la QVGA.
Corectări de erori¶
Imagistică:
S-au corectat calculul imaginii integrale, coruperea filtrului
median(), calculul centroidului, filtrele RGB de piele / alb-negru pe intrare RGB și citirea/scrierea mai rapidă a BMP/PPM în tonuri de gri.
Senzor și sistem:
S-au corectat temporizatoarele
pyb.Servo(Servo funcționează acum), rezoluția HQVGA, fiabilitatea inițializării cardului SD, reinițializarea stocării după o resetare software și relansarea REPL atunci când nu există niciun script.
Suport hardware și plăci¶
Senzorul de cameră OV7725.
Shield LCD (modulul
lcd), camera termicămlxși bazele WiFi ATWINC1500.
Modificări incompatibile ale API-ului¶
Modificări ale API-ului vizibile pentru utilizatori între v1.1.0 și v1.2.0. Domeniu: module C Python din modules/ și biblioteci Python din scripts/libraries/.
Toate cele trei modificări incompatibile sunt modificări de comportament ale funcțiilor de bază sensor (același API, comportament diferit) — reverificați scripturile afectate. Fiecare hash de commit trimite către diff-ul său pe GitHub. (Marea majoritate a acestei versiuni constă în API nou construit în intervalul v1.1→v1.2 și este, prin urmare, aditivă, nu incompatibilă.)
sensor.reset() nu mai aplică o configurație implicită (comportament)¶
sensor.reset() nu mai aplică o configurație implicită încorporată (pixformat / framesize / framerate / gain / contrast / brightness / saturation). Scripturile care se bazau pe reset() pentru a lăsa o valoare implicită utilizabilă trebuie acum să apeleze explicit sensor.set_pixformat() și sensor.set_framesize() (și orice alte setări) după reset().
Commit-uri: d1e782df3
sensor.snapshot() ridică o excepție la expirarea timpului (comportament)¶
sensor.snapshot() ridică acum RuntimeError("Sensor Timeout!!") atunci când senzorul depășește timpul de așteptare, în loc să se blocheze la nesfârșit. Înfășurați snapshot() într-un try / except RuntimeError dacă trebuie să tolerați expirările de timp.
Commit-uri: e3f41d674
sensor.set_pixformat() ridică o excepție pentru un format neacceptat (comportament)¶
sensor.set_pixformat() ridică acum o excepție atunci când i se dă un format de pixel neacceptat, în loc să returneze False. Codul care verifica valoarea returnată False trebuie acum să prindă excepția în schimb.
Commit-uri: e0c5822c2
Listă de verificare pentru migrare¶
Pentru o portare curată la v1.2.0, lucrul obișnuit este:
Setați explicit
sensor.set_pixformat()/sensor.set_framesize()dupăsensor.reset()(modificarea reset).Înfășurați
sensor.snapshot()într-untry/except RuntimeErrordacă trebuie să tolerați expirările de timp ale senzorului (modificarea snapshot).Prindeți excepția de la
sensor.set_pixformat()în loc să verificați pentruFalse(modificarea set_pixformat).
Toate celelalte scripturi rulează nemodificate.