v1.2.0¶
v1.2.0 is een fundamentele, zeer grote release die het grootste deel van de klassieke OpenMV imaging-API uitbouwt: de teken-methoden, binaire / morfologie-bewerkingen, keypoint-descriptors (FAST / FREAK / LBP), kleurconversies en image.statistics, BMP / PPM / JPEG bestands-I/O, de lcd-, mjpeg-, gif- en mlx-thermische modules, de OV7725-camera, en veel sensor-instellingen. Een aantal kerngedragingen van sensor is gewijzigd — lees de breaking changes hieronder.
Hoogtepunten¶
Teken-API —
draw_line()/draw_rectangle()/draw_circle()/draw_string()/draw_cross()/draw_keypoints().Binair / morfologie —
binary(),invert(),and/or/xor/...,erode()/dilate()/morph(),negate()/difference().Keypoints — FAST / FREAK / LBP descriptors met
match_descriptor()/save_descriptor()/load_descriptor().OV7725-cameraondersteuning;
image.statistics; BMP/PPM/JPEG bestands-I/O.Breaking: het gedrag van
sensor.reset(),sensor.snapshot()ensensor.set_pixformat()is gewijzigd — zie de breaking changes.
Nieuwe functies¶
Tekenen —
image.draw_line()/draw_rectangle()/draw_circle()/draw_string()/draw_cross()/draw_keypoints()toegevoegd met keyword-argumenten (color, thickness, …).Binair / morfologie —
image.binary(),invert(),and()/nand()/or()/nor()/xor()/xnor(),erode()/dilate()/morph(),negate()/difference(),pixels(),centroid(),orientation_radians()/orientation_degrees()enwidth()/height()/format()toegevoegd.Keypoints / descriptors — FAST-keypointextractie via
find_keypoints(), een uniformematch_descriptor()ensave_descriptor()/load_descriptor()voor FREAK / LBP, plus een profiel-gezicht Haar/LBP-cascade.Kleur / statistieken —
image.statisticsen kleurconversiefuncties (rgb_to_lab/lab_to_rgb/rgb_to_grayscale/grayscale_to_rgb).Bestands-I/O — BMP / PPM (P2/P3/P5/P6) / JPEG laden en opslaan (inclusief grijswaarden-JPEG en 4:2:0 / 4:2:2 chroma-subsampling).
Modules — nieuwe
lcd(LCD-shield),mjpeg(video-opname), kleur-gif(metGif.loop()), enmlxthermische-cameramodules, elk met voorbeeldscripts.Sensor —
sensor.get_id()toegevoegd (+ OV9650/OV2640/OV7725 PID-constanten),sensor.set_special_effect()(SDE_*-constanten),sensor.set_image_filter()(FILTER_BW / FILTER_SKIN), deHQVGA-framesize enimage.set_pixel(x, y, …).WiFi — de ATWINC1500 WiFi-driver en het OpenMV 1/2 BSP-fundament toegevoegd, plus een BLE-voorbeeld.
Overige wijzigingen en verbeteringen¶
De framebuffer wordt nu JPEG-gecomprimeerd voordat hij naar OpenMV IDE wordt gestreamd (lagere bandbreedte); JPEG-compressie gebeurt in-place; OV7725 H/V-zoom maakt willekeurige schaling mogelijk; verbeterde (snellere) Haar-gezichtsdetectie die op QVGA draait.
Bugfixes¶
Imaging:
De integral-image-berekening, corruptie van het
median()-filter, de centroid-berekening, RGB-huid- / zwart-witfilters op RGB-invoer gecorrigeerd, en snellere grijswaarden-BMP/PPM-lees/-schrijfbewerkingen.
Sensor en systeem:
De
pyb.Servo-timers gecorrigeerd (Servo werkt nu), HQVGA-resolutie, betrouwbaarheid van SD-kaartinitialisatie, herinitialisatie van opslag na een soft-reset, en het opnieuw uitvoeren van de REPL wanneer er geen script aanwezig is.
Hardware- en boardondersteuning¶
OV7725-camerasensor.
LCD-shield (
lcd-module),mlxthermische camera, en ATWINC1500 WiFi-fundament.
Breaking API-wijzigingen¶
Voor gebruikers zichtbare API-breaks tussen v1.1.0 en v1.2.0. Bereik: Python C-modules in modules/ en Python-bibliotheken in scripts/libraries/.
Alle drie de breaking changes zijn gedragswijzigingen in kern-sensor-functies (zelfde API, ander gedrag) — controleer betreffende scripts opnieuw. Elke commit-hash linkt naar zijn diff op GitHub. (Het overgrote deel van deze release is nieuwe API die binnen het bereik v1.1→v1.2 is uitgebouwd en is dus additief, niet breaking.)
sensor.reset() past geen standaardconfiguratie meer toe (gedrag)¶
sensor.reset() past niet langer een ingebouwde standaardconfiguratie toe (pixformat / framesize / framerate / gain / contrast / brightness / saturation). Scripts die erop vertrouwden dat reset() een bruikbare standaardinstelling achterliet, moeten nu expliciet sensor.set_pixformat() en sensor.set_framesize() aanroepen (en eventuele andere instellingen) na reset().
Commits: d1e782df3
sensor.snapshot() gooit een uitzondering bij timeout (gedrag)¶
sensor.snapshot() gooit nu RuntimeError("Sensor Timeout!!") wanneer de sensor een timeout krijgt, in plaats van oneindig te blijven hangen. Wikkel snapshot() in try / except RuntimeError als je timeouts moet kunnen tolereren.
Commits: e3f41d674
sensor.set_pixformat() gooit een uitzondering bij niet-ondersteund formaat (gedrag)¶
sensor.set_pixformat() gooit nu een uitzondering wanneer een niet-ondersteund pixelformaat wordt opgegeven, in plaats van False terug te geven. Code die de False-retourwaarde controleerde, moet in plaats daarvan de uitzondering opvangen.
Commits: e0c5822c2
Migratiechecklist¶
Voor een schone overstap naar v1.2.0 is het typische werk:
Stel expliciet
sensor.set_pixformat()/sensor.set_framesize()in nasensor.reset()(de reset-wijziging).Wikkel
sensor.snapshot()intry/except RuntimeErrorals je sensortimeouts moet kunnen tolereren (de snapshot-wijziging).Vang de uitzondering van
sensor.set_pixformat()op in plaats van te controleren opFalse(de set_pixformat-wijziging).
Alle andere scripts draaien ongewijzigd.