v1.2.0

A v1.2.0 egy alapozó, igen nagy kiadás, amely a klasszikus OpenMV képalkotási API nagy részét kiépíti: a rajzolási metódusokat, a bináris / morfológiai műveleteket, a kulcspont-leírókat (FAST / FREAK / LBP), a színkonverziókat és az image.statistics osztályt, a BMP / PPM / JPEG fájl I/O-t, az lcd, az mjpeg, a gif és az mlx hőkamera-modulokat, az OV7725 kamerát, valamint számos sensor vezérlőt. Néhány alapvető sensor viselkedés megváltozott — olvasd el az alábbi törést okozó változásokat.

Kiemelt újdonságok

  • Rajzolási APIdraw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints().

  • Bináris / morfológiabinary(), invert(), and/or/xor/..., erode() / dilate() / morph(), negate() / difference().

  • Kulcspontok — FAST / FREAK / LBP leírók match_descriptor() / save_descriptor() / load_descriptor() függvényekkel.

  • Új moduloklcd, mjpeg, gif (színes) és mlx hőkamera.

  • OV7725 kameratámogatás; image.statistics; BMP/PPM/JPEG fájl I/O.

  • Törést okozó: az sensor.reset(), az sensor.snapshot() és az sensor.set_pixformat() viselkedése megváltozott — lásd a törést okozó változásokat.

Új funkciók

  • Rajzolás — hozzáadva az image.draw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints() kulcsszavas argumentumokkal (szín, vastagság, …).

  • Bináris / morfológia — hozzáadva az image.binary(), invert(), and() / nand() / or() / nor() / xor() / xnor(), erode() / dilate() / morph(), negate() / difference(), pixels(), centroid(), orientation_radians() / orientation_degrees(), valamint a width() / height() / format().

  • Kulcspontok / leírók — FAST kulcspont-kinyerés a find_keypoints() segítségével, egységes match_descriptor() és save_descriptor() / load_descriptor() a FREAK / LBP számára, valamint egy profil-arc Haar/LBP kaszkád.

  • Szín / statisztikaimage.statistics és színkonverziós függvények (rgb_to_lab / lab_to_rgb / rgb_to_grayscale / grayscale_to_rgb).

  • Fájl I/O — BMP / PPM (P2/P3/P5/P6) / JPEG betöltése és mentése (beleértve a szürkeárnyalatos JPEG-et és a 4:2:0 / 4:2:2 chroma-alulmintavételezést).

  • Modulok — új lcd (LCD shield), mjpeg (videórögzítés), színes gif (Gif.loop() függvénnyel) és mlx hőkamera-modulok, mindegyik példaszkriptekkel.

  • Érzékelő — hozzáadva az sensor.get_id() (+ OV9650/OV2640/OV7725 PID konstansok), az sensor.set_special_effect() (SDE_* konstansok), a sensor.set_image_filter() (FILTER_BW / FILTER_SKIN), a HQVGA képkockaméret és az image.set_pixel(x, y, …).

  • WiFi — hozzáadva az ATWINC1500 WiFi-illesztőprogram és az OpenMV 1/2 BSP alapjai, valamint egy BLE példa.

Egyéb változások és fejlesztések

  • A képkocka-puffer mostantól JPEG-tömörített, mielőtt az OpenMV IDE-be streamelődne (kisebb sávszélesség); a JPEG-tömörítés helyben történik; az OV7725 H/V nagyítás tetszőleges méretezést tesz lehetővé; javított (gyorsabb) Haar arcfelismerés, amely QVGA felbontáson fut.

Hibajavítások

Képalkotás:

  • Javítva az integrálkép-számítás, a median() szűrő sérülése, a centroid-számítás, az RGB bőr- / fekete-fehér szűrők RGB bemeneten, valamint gyorsabb szürkeárnyalatos BMP/PPM olvasás/írás.

Érzékelő és rendszer:

  • Javítva a pyb.Servo időzítők (a Servo most már működik), a HQVGA felbontás, az SD-kártya inicializálásának megbízhatósága, a tárhely újrainicializálása szoftveres újraindítás után, valamint a REPL újrafuttatása, ha nincs jelen szkript.

Hardver- és kártyatámogatás

  • OV7725 kameraérzékelő.

  • LCD shield (lcd modul), mlx hőkamera és ATWINC1500 WiFi-alapok.

Törést okozó API-változások

A felhasználó számára látható API-törések a v1.1.0 és a v1.2.0 között. Hatókör: Python C-modulok a modules/ mappában és Python könyvtárak a scripts/libraries/ mappában.

Mindhárom törést okozó változás a központi sensor függvények viselkedésbeli változása (azonos API, eltérő viselkedés) — ellenőrizd újra az érintett szkripteket. Minden commit-hash a GitHubon lévő diffjére hivatkozik. (A kiadás túlnyomó része új API, amelyet a v1.1→v1.2 tartományon belül építettek ki, ezért bővítő jellegű, nem törést okozó.)

Az sensor.reset() már nem alkalmaz alapértelmezett konfigurációt (viselkedés)

Az sensor.reset() már nem alkalmaz beépített alapértelmezett konfigurációt (pixformat / framesize / framerate / gain / contrast / brightness / saturation). Azoknak a szkripteknek, amelyek arra támaszkodtak, hogy a reset() használható alapértelmezést hagy maga után, mostantól kifejezetten meg kell hívniuk az sensor.set_pixformat() és az sensor.set_framesize() (valamint bármely egyéb beállítást) függvényt a reset() után.

Commitok: d1e782df3

Az sensor.snapshot() kivételt dob időtúllépéskor (viselkedés)

Az sensor.snapshot() mostantól RuntimeError("Sensor Timeout!!") kivételt dob, amikor az érzékelő időtúllépést jelez, ahelyett, hogy határozatlan ideig várakozna. Csomagold a snapshot() hívást try / except RuntimeError blokkba, ha tolerálnod kell az időtúllépéseket.

Commitok: e3f41d674

Az sensor.set_pixformat() kivételt dob nem támogatott formátum esetén (viselkedés)

Az sensor.set_pixformat() mostantól kivételt dob, ha nem támogatott pixelformátumot kap, ahelyett, hogy False értéket adna vissza. Annak a kódnak, amely a False visszatérési értéket ellenőrizte, mostantól a kivételt kell elkapnia.

Commitok: e0c5822c2

Migrációs ellenőrzőlista

A v1.2.0-ra való tiszta átálláshoz a szokásos teendők:

  1. Állítsd be kifejezetten az sensor.set_pixformat() / sensor.set_framesize() függvényt az sensor.reset() után (a reset változás).

  2. Csomagold az sensor.snapshot() hívást try / except RuntimeError blokkba, ha tolerálnod kell az érzékelő időtúllépéseit (a snapshot változás).

  3. Kapd el az sensor.set_pixformat() kivételét a False ellenőrzése helyett (a set_pixformat változás).

Minden más szkript változatlanul fut.