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

  • Binair / morfologiebinary(), invert(), and/or/xor/..., erode() / dilate() / morph(), negate() / difference().

  • Keypoints — FAST / FREAK / LBP descriptors met match_descriptor() / save_descriptor() / load_descriptor().

  • Nieuwe moduleslcd, mjpeg, gif (kleur), en mlx thermisch.

  • OV7725-cameraondersteuning; image.statistics; BMP/PPM/JPEG bestands-I/O.

  • Breaking: het gedrag van sensor.reset(), sensor.snapshot() en sensor.set_pixformat() is gewijzigd — zie de breaking changes.

Nieuwe functies

  • Tekenenimage.draw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints() toegevoegd met keyword-argumenten (color, thickness, …).

  • Binair / morfologieimage.binary(), invert(), and() / nand() / or() / nor() / xor() / xnor(), erode() / dilate() / morph(), negate() / difference(), pixels(), centroid(), orientation_radians() / orientation_degrees() en width() / height() / format() toegevoegd.

  • Keypoints / descriptors — FAST-keypointextractie via find_keypoints(), een uniforme match_descriptor() en save_descriptor() / load_descriptor() voor FREAK / LBP, plus een profiel-gezicht Haar/LBP-cascade.

  • Kleur / statistiekenimage.statistics en 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 (met Gif.loop()), en mlx thermische-cameramodules, elk met voorbeeldscripts.

  • Sensorsensor.get_id() toegevoegd (+ OV9650/OV2640/OV7725 PID-constanten), sensor.set_special_effect() (SDE_*-constanten), sensor.set_image_filter() (FILTER_BW / FILTER_SKIN), de HQVGA-framesize en image.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), mlx thermische 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:

  1. Stel expliciet sensor.set_pixformat() / sensor.set_framesize() in na sensor.reset() (de reset-wijziging).

  2. Wikkel sensor.snapshot() in try / except RuntimeError als je sensortimeouts moet kunnen tolereren (de snapshot-wijziging).

  3. Vang de uitzondering van sensor.set_pixformat() op in plaats van te controleren op False (de set_pixformat-wijziging).

Alle andere scripts draaien ongewijzigd.