v1.2.0¶
v1.2.0 är en grundläggande, mycket stor release som bygger ut större delen av det klassiska OpenMV-bild-API:et: ritmetoderna, binär- / morfologi-operationerna, nyckelpunktsdeskriptorerna (FAST / FREAK / LBP), färgkonverteringar och image.statistics, BMP / PPM / JPEG-fil-I/O, modulerna lcd, mjpeg, gif och mlx (termisk), OV7725-kameran och många sensor-kontroller. En del grundläggande sensor-beteende ändrades — läs de brytande ändringarna nedan.
Höjdpunkter¶
Rit-API —
draw_line()/draw_rectangle()/draw_circle()/draw_string()/draw_cross()/draw_keypoints().Binär / morfologi —
binary(),invert(),and/or/xor/...,erode()/dilate()/morph(),negate()/difference().Nyckelpunkter — FAST- / FREAK- / LBP-deskriptorer med
match_descriptor()/save_descriptor()/load_descriptor().OV7725-kamerastöd;
image.statistics; BMP/PPM/JPEG-fil-I/O.Brytande: beteendet för
sensor.reset(),sensor.snapshot()ochsensor.set_pixformat()ändrades — se de brytande ändringarna.
Nya funktioner¶
Ritning — lade till
image.draw_line()/draw_rectangle()/draw_circle()/draw_string()/draw_cross()/draw_keypoints()med nyckelordsargument (färg, tjocklek, …).Binär / morfologi — lade till
image.binary(),invert(),and()/nand()/or()/nor()/xor()/xnor(),erode()/dilate()/morph(),negate()/difference(),pixels(),centroid(),orientation_radians()/orientation_degrees()samtwidth()/height()/format().Nyckelpunkter / deskriptorer — FAST-nyckelpunktsextrahering via
find_keypoints(), en enhetligmatch_descriptor()ochsave_descriptor()/load_descriptor()för FREAK / LBP, plus en Haar/LBP-kaskad för ansikten i profil.Färg / statistik —
image.statisticsoch färgkonverteringsfunktioner (rgb_to_lab/lab_to_rgb/rgb_to_grayscale/grayscale_to_rgb).Fil-I/O — inläsning och sparande av BMP / PPM (P2/P3/P5/P6) / JPEG (inklusive JPEG i gråskala och 4:2:0 / 4:2:2 kroma-undersampling).
Moduler — nya modulerna
lcd(LCD-sköld),mjpeg(videoinspelning),gifi färg (medGif.loop()) ochmlx(termisk kamera), var och en med exempelskript.Sensor — lade till
sensor.get_id()(+ PID-konstanterna OV9650/OV2640/OV7725),sensor.set_special_effect()(SDE_*-konstanter),sensor.set_image_filter()(FILTER_BW / FILTER_SKIN), bildrutestorlekenHQVGAsamtimage.set_pixel(x, y, …).WiFi — lade till ATWINC1500-WiFi-drivrutinen och grundarbete för OpenMV 1/2-BSP, plus ett BLE-exempel.
Övriga ändringar och förbättringar¶
Bildbufferten är nu JPEG-komprimerad innan den strömmas till OpenMV IDE (lägre bandbredd); JPEG-komprimering görs på plats; OV7725 H/V-zoom möjliggör godtycklig skalning; förbättrad (snabbare) Haar-ansiktsdetektering som körs i QVGA.
Felrättningar¶
Bildhantering:
Rättade beräkningen av integralbild, korruption i
median()-filtret, centroidberäkningen, RGB hud- / svartvitt-filter på RGB-indata samt snabbare läsning/skrivning av BMP/PPM i gråskala.
Sensor och system:
Rättade
pyb.Servo-timrarna (Servo fungerar nu), HQVGA-upplösningen, tillförlitligheten vid SD-kortsinitiering, ominitiering av lagring efter en mjuk omstart samt återstart av REPL när inget skript finns.
Hårdvara och kortstöd¶
OV7725-kamerasensor.
LCD-sköld (
lcd-modulen),mlx-termisk kamera och grundarbete för ATWINC1500-WiFi.
Brytande API-ändringar¶
Användarsynliga API-brott mellan v1.1.0 och v1.2.0. Omfattning: Python-C-moduler i modules/ och Python-bibliotek i scripts/libraries/.
Alla tre brytande ändringar är beteendeändringar i grundläggande sensor-funktioner (samma API, annat beteende) — kontrollera berörda skript igen. Varje commit-hash länkar till sin diff på GitHub. (Den absoluta majoriteten av denna release är nytt API som byggts ut inom intervallet v1.1→v1.2 och är därför additiv, inte brytande.)
sensor.reset() tillämpar inte längre en standardkonfiguration (beteende)¶
sensor.reset() tillämpar inte längre en inbyggd standardkonfiguration (pixformat / bildrutestorlek / bildfrekvens / förstärkning / kontrast / ljusstyrka / mättnad). Skript som förlitade sig på att reset() lämnade en användbar standard måste nu explicit anropa sensor.set_pixformat() och sensor.set_framesize() (och eventuella andra inställningar) efter reset().
Commits: d1e782df3
sensor.snapshot() ger fel vid timeout (beteende)¶
sensor.snapshot() ger nu upphov till RuntimeError("Sensor Timeout!!") när sensorn får timeout, istället för att hänga sig på obestämd tid. Omslut snapshot() i try / except RuntimeError om du behöver tolerera timeouts.
Commits: e3f41d674
sensor.set_pixformat() ger fel vid format som inte stöds (beteende)¶
sensor.set_pixformat() ger nu upphov till ett undantag när ett pixelformat som inte stöds anges, istället för att returnera False. Kod som kontrollerade returvärdet False måste istället fånga undantaget.
Commits: e0c5822c2
Migreringschecklista¶
För en ren portning till v1.2.0 är det typiska arbetet:
Ange explicit
sensor.set_pixformat()/sensor.set_framesize()eftersensor.reset()(reset-ändringen).Omslut
sensor.snapshot()itry/except RuntimeErrorom du behöver tolerera sensor-timeouts (snapshot-ändringen).Fånga undantaget från
sensor.set_pixformat()istället för att kontrollera om värdet ärFalse(set_pixformat-ändringen).
Alla andra skript körs oförändrade.