v1.2.0

v1.2.0 je temeljno, vrlo veliko izdanje koje izgrađuje većinu klasičnog OpenMV API-ja za obradu slike: metode za crtanje, binarne / morfološke operacije, deskriptore ključnih točaka (FAST / FREAK / LBP), konverzije boja i image.statistics, BMP / PPM / JPEG ulaz/izlaz datoteka, module lcd, mjpeg, gif i mlx toplinski modul, OV7725 kameru te brojne kontrole modula sensor. Promijenjeno je neko temeljno ponašanje modula sensor — pročitajte promjene koje narušavaju kompatibilnost u nastavku.

Istaknuto

  • API za crtanjedraw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints().

  • Binarne / morfološke operacijebinary(), invert(), and/or/xor/..., erode() / dilate() / morph(), negate() / difference().

  • Ključne točke — FAST / FREAK / LBP deskriptori s match_descriptor() / save_descriptor() / load_descriptor().

  • Novi modulilcd, mjpeg, gif (u boji) i mlx toplinski.

  • Podrška za OV7725 kameru; image.statistics; BMP/PPM/JPEG ulaz/izlaz datoteka.

  • Narušava kompatibilnost: ponašanje funkcija sensor.reset(), sensor.snapshot() i sensor.set_pixformat() je promijenjeno — pogledajte promjene koje narušavaju kompatibilnost.

Nove značajke

  • Crtanje — dodane su image.draw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints() s ključnim argumentima (boja, debljina, …).

  • Binarne / morfološke operacije — dodane su image.binary(), invert(), and() / nand() / or() / nor() / xor() / xnor(), erode() / dilate() / morph(), negate() / difference(), pixels(), centroid(), orientation_radians() / orientation_degrees() te width() / height() / format().

  • Ključne točke / deskriptori — izdvajanje FAST ključnih točaka putem find_keypoints(), jedinstveni match_descriptor() i save_descriptor() / load_descriptor() za FREAK / LBP, uz Haar/LBP kaskadu za profil lica.

  • Boja / statistikaimage.statistics i funkcije za konverziju boja (rgb_to_lab / lab_to_rgb / rgb_to_grayscale / grayscale_to_rgb).

  • Ulaz/izlaz datoteka — učitavanje i spremanje BMP / PPM (P2/P3/P5/P6) / JPEG (uključujući JPEG u sivim tonovima i 4:2:0 / 4:2:2 kromatsko poduzorkovanje).

  • Moduli — novi lcd (LCD štit), mjpeg (snimanje videa), gif u boji (s Gif.loop()) i mlx modul za toplinsku kameru, svaki s primjerima skripti.

  • Senzor — dodani su sensor.get_id() (+ OV9650/OV2640/OV7725 PID konstante), sensor.set_special_effect() (SDE_* konstante), sensor.set_image_filter() (FILTER_BW / FILTER_SKIN), veličina sličice HQVGA te image.set_pixel(x, y, …).

  • WiFi — dodan je ATWINC1500 WiFi upravljački program i temelji za OpenMV 1/2 BSP, uz BLE primjer.

Ostale promjene i poboljšanja

  • Međuspremnik slike sada se JPEG-komprimira prije slanja u OpenMV IDE (manja propusnost); JPEG kompresija se obavlja na licu mjesta; OV7725 H/V zumiranje omogućuje proizvoljno skaliranje; poboljšana (brža) Haar detekcija lica koja radi pri QVGA razlučivosti.

Ispravci grešaka

Obrada slike:

  • Ispravljeni su izračun integralne slike, oštećenje median() filtra, izračun centroida, RGB filtri za kožu / crno-bijelo na RGB ulazu te brže čitanje/pisanje BMP/PPM datoteka u sivim tonovima.

Senzor i sustav:

  • Ispravljeni su mjerači vremena za pyb.Servo (Servo sada radi), HQVGA razlučivost, pouzdanost inicijalizacije SD kartice, ponovno inicijaliziranje pohrane nakon mekog ponovnog pokretanja te ponovno pokretanje REPL-a kada nema prisutne skripte.

Hardver i podrška za ploče

  • OV7725 senzor kamere.

  • LCD štit (modul lcd), mlx toplinska kamera i temelji za ATWINC1500 WiFi.

Promjene API-ja koje narušavaju kompatibilnost

Promjene API-ja vidljive korisniku između v1.1.0 i v1.2.0. Opseg: Python C-moduli u modules/ i Python biblioteke u scripts/libraries/.

Sve tri promjene koje narušavaju kompatibilnost su promjene ponašanja temeljnih funkcija modula sensor (isti API, drukčije ponašanje) — ponovno provjerite pogođene skripte. Svaki hash commita povezan je sa svojim diffom na GitHubu. (Velika većina ovog izdanja je novi API izgrađen unutar raspona v1.1→v1.2 i stoga je dodatak, a ne narušavanje.)

sensor.reset() više ne primjenjuje zadanu konfiguraciju (ponašanje)

sensor.reset() više ne primjenjuje ugrađenu zadanu konfiguraciju (pixformat / framesize / framerate / gain / contrast / brightness / saturation). Skripte koje su se oslanjale na to da reset() ostavlja iskoristive zadane vrijednosti sada moraju eksplicitno pozvati sensor.set_pixformat() i sensor.set_framesize() (te bilo koje druge postavke) nakon reset().

Commiti: d1e782df3

sensor.snapshot() izaziva iznimku pri isteku vremena (ponašanje)

sensor.snapshot() sada izaziva RuntimeError("Sensor Timeout!!") kada senzor istekne umjesto da se beskonačno zaglavi. Omotajte snapshot() u try / except RuntimeError ako trebate tolerirati istek vremena.

Commiti: e3f41d674

sensor.set_pixformat() izaziva iznimku za nepodržani format (ponašanje)

sensor.set_pixformat() sada izaziva iznimku kada dobije nepodržani format piksela umjesto da vraća False. Kod koji je provjeravao povratnu vrijednost False mora umjesto toga uhvatiti iznimku.

Commiti: e0c5822c2

Kontrolni popis za migraciju

Za čisti prijenos na v1.2.0 tipičan posao je:

  1. Eksplicitno postavite sensor.set_pixformat() / sensor.set_framesize() nakon sensor.reset() (promjena reseta).

  2. Omotajte sensor.snapshot() u try / except RuntimeError ako trebate tolerirati istek vremena senzora (promjena snapshota).

  3. Uhvatite iznimku iz sensor.set_pixformat() umjesto provjere False (promjena set_pixformat).

Sve ostale skripte rade nepromijenjeno.