v1.2.0#
v1.2.0 je základní, velmi rozsáhlé vydání, které buduje většinu klasického zobrazovacího API OpenMV: metody pro kreslení, binární / morfologické operace, deskriptory klíčových bodů (FAST / FREAK / LBP), barevné konverze a image.statistics, vstup/výstup souborů BMP / PPM / JPEG, moduly lcd, mjpeg, gif a termální modul mlx, kameru OV7725 a mnoho ovládacích prvků sensor. Některé základní chování sensor se změnilo — přečtěte si níže uvedené zásadní změny.
Hlavní novinky#
Kreslicí API —
draw_line()/draw_rectangle()/draw_circle()/draw_string()/draw_cross()/draw_keypoints().Binární / morfologie —
binary(),invert(),and/or/xor/...,erode()/dilate()/morph(),negate()/difference().Klíčové body — deskriptory FAST / FREAK / LBP s
match_descriptor()/save_descriptor()/load_descriptor().Podpora kamery OV7725;
image.statistics; vstup/výstup souborů BMP/PPM/JPEG.Zásadní: chování
sensor.reset(),sensor.snapshot()asensor.set_pixformat()se změnilo — viz zásadní změny.
Nové funkce#
Kreslení — přidány
image.draw_line()/draw_rectangle()/draw_circle()/draw_string()/draw_cross()/draw_keypoints()s pojmenovanými argumenty (barva, tloušťka, …).Binární / morfologie — přidány
image.binary(),invert(),and()/nand()/or()/nor()/xor()/xnor(),erode()/dilate()/morph(),negate()/difference(),pixels(),centroid(),orientation_radians()/orientation_degrees()awidth()/height()/format().Klíčové body / deskriptory — extrakce klíčových bodů FAST přes
find_keypoints(), jednotnématch_descriptor()asave_descriptor()/load_descriptor()pro FREAK / LBP a navíc Haar/LBP kaskáda pro profil obličeje.Barva / statistiky —
image.statisticsa funkce pro barevné konverze (rgb_to_lab/lab_to_rgb/rgb_to_grayscale/grayscale_to_rgb).Vstup/výstup souborů — načítání a ukládání BMP / PPM (P2/P3/P5/P6) / JPEG (včetně JPEG ve stupních šedi a podvzorkování barevnosti 4:2:0 / 4:2:2).
Moduly — nový
lcd(LCD shield),mjpeg(nahrávání videa), barevnýgif(sGif.loop()) a termální moduly kamerymlx, každý s ukázkovými skripty.Senzor — přidány
sensor.get_id()(+ PID konstanty OV9650/OV2640/OV7725),sensor.set_special_effect()(konstanty SDE_*),sensor.set_image_filter()(FILTER_BW / FILTER_SKIN), velikost snímkuHQVGAaimage.set_pixel(x, y, …).WiFi — přidán ovladač WiFi ATWINC1500 a základy BSP pro OpenMV 1/2, plus příklad BLE.
Další změny a vylepšení#
Snímkový buffer (frame buffer) je nyní před streamováním do OpenMV IDE komprimován do JPEG (nižší šířka pásma); komprese JPEG probíhá na místě; H/V zoom OV7725 umožňuje libovolné škálování; vylepšená (rychlejší) detekce obličejů pomocí Haar, která běží na QVGA.
Opravy chyb#
Zpracování obrazu:
Opraven výpočet integrálního obrazu, poškození filtru
median(), výpočet těžiště, RGB filtry pleti / černobílé na RGB vstupu a rychlejší čtení/zápis BMP/PPM ve stupních šedi.
Senzor a systém:
Opraveny časovače
pyb.Servo(Servo nyní funguje), rozlišení HQVGA, spolehlivost inicializace SD karty, opětovná inicializace úložiště po softwarovém resetu a opětovné spuštění REPL, pokud není přítomen žádný skript.
Hardware a podpora desek#
Obrazový senzor OV7725.
LCD shield (modul
lcd), termální kameramlxa základy WiFi ATWINC1500.
Zásadní změny API#
Pro uživatele viditelné změny API mezi v1.1.0 a v1.2.0. Rozsah: C-moduly Pythonu v modules/ a knihovny Pythonu v scripts/libraries/.
Všechny tři zásadní změny jsou změny chování základních funkcí sensor (stejné API, jiné chování) — znovu zkontrolujte dotčené skripty. Každý hash commitu odkazuje na svůj diff na GitHubu. (Naprostá většina tohoto vydání je nové API vybudované v rozsahu v1.1→v1.2, a je tedy přídavná, nikoli zásadní.)
sensor.reset() již neaplikuje výchozí konfiguraci (chování)#
sensor.reset() již neaplikuje vestavěnou výchozí konfiguraci (pixformat / framesize / framerate / gain / contrast / brightness / saturation). Skripty, které se spoléhaly na to, že reset() zanechá použitelnou výchozí konfiguraci, musí nyní po reset() explicitně volat sensor.set_pixformat() a sensor.set_framesize() (a jakákoli další nastavení).
Commity: d1e782df3
sensor.snapshot() vyvolá výjimku při vypršení časového limitu (chování)#
sensor.snapshot() nyní vyvolá RuntimeError("Sensor Timeout!!"), když senzoru vyprší časový limit, místo nekonečného zaseknutí. Pokud potřebujete tolerovat časové limity, obalte snapshot() do try / except RuntimeError.
Commity: e3f41d674
sensor.set_pixformat() vyvolá výjimku při nepodporovaném formátu (chování)#
sensor.set_pixformat() nyní vyvolá výjimku, je-li jí předán nepodporovaný pixelový formát, místo vrácení False. Kód, který kontroloval návratovou hodnotu False, musí místo toho zachytit výjimku.
Commity: e0c5822c2
Kontrolní seznam pro migraci#
Pro čistý přechod na v1.2.0 obvykle platí toto:
Po
sensor.reset()explicitně nastavtesensor.set_pixformat()/sensor.set_framesize()(změna resetu).Pokud potřebujete tolerovat časové limity senzoru, obalte
sensor.snapshot()dotry/except RuntimeError(změna snapshotu).Zachyťte výjimku z
sensor.set_pixformat()místo kontroly naFalse(změna set_pixformat).
Všechny ostatní skripty běží beze změny.