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-APIdraw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints().

  • Binär / morfologibinary(), invert(), and/or/xor/..., erode() / dilate() / morph(), negate() / difference().

  • Nyckelpunkter — FAST- / FREAK- / LBP-deskriptorer med match_descriptor() / save_descriptor() / load_descriptor().

  • Nya modulerlcd, mjpeg, gif (färg) och mlx (termisk).

  • OV7725-kamerastöd; image.statistics; BMP/PPM/JPEG-fil-I/O.

  • Brytande: beteendet för sensor.reset(), sensor.snapshot() och sensor.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() samt width() / height() / format().

  • Nyckelpunkter / deskriptorer — FAST-nyckelpunktsextrahering via find_keypoints(), en enhetlig match_descriptor() och save_descriptor() / load_descriptor() för FREAK / LBP, plus en Haar/LBP-kaskad för ansikten i profil.

  • Färg / statistikimage.statistics och 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), gif i färg (med Gif.loop()) och mlx (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), bildrutestorleken HQVGA samt image.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:

  1. Ange explicit sensor.set_pixformat() / sensor.set_framesize() efter sensor.reset() (reset-ändringen).

  2. Omslut sensor.snapshot() i try / except RuntimeError om du behöver tolerera sensor-timeouts (snapshot-ändringen).

  3. Fånga undantaget från sensor.set_pixformat() istället för att kontrollera om värdet är False (set_pixformat-ändringen).

Alla andra skript körs oförändrade.