v2.8.0

v2.8.0 is een enorme release. Hij brengt de OpenMV Cam H7 (STM32H7) tot leven met een hardware JPEG-encoder en H7 ADC/DAC, een grote herziening van de image-API (tekendikte/vullingen, wiskundige/binaire bewerkingen, veel nieuwe filters, Otsu-drempelwaarde), MicroPython-threading en de omv-versiemodule. De volgorde van Python-argumentparsing is vastgezet en image.mask_ellipse() is verwijderd — lees de breaking changes hieronder.

Hoogtepunten

  • OpenMV Cam H7 — nieuw STM32H7-board met een hardware JPEG-encoder en H7 ADC / DAC.

  • image-herziening — lijndikte, vormvullingen, draw_arrow() / draw_image(), volledige wiskundige/binaire bewerkingen en veel nieuwe filters.

  • Otsu-drempelwaardehistogram.get_threshold() en een Threshold-object.

  • Threading — MicroPython _thread-ondersteuning.

  • omv-module — versie- / boardinformatie.

  • Breaking: de volgorde van positionele Python-argumenten is nu strikt en image.mask_ellipse() is verwijderd — zie de breaking changes.

Nieuwe functies

  • OpenMV Cam H7 — STM32H7-boardondersteuning met een hardware JPEG-encoder, H7 ADC en H7 DAC.

  • Tekenen — lijn-thickness, vorm-fill (rechthoek / cirkel), tekst-scale / kerning, een mono_space-keyword op draw_string(), image.draw_arrow() en image.draw_image() (sprite- / masktekening) toegevoegd.

  • Wiskundige bewerkingenadd(), sub(), mul(), div(), min(), max(), difference(), blend(), replace() (met hmirror / vflip / mask) en remove_shadows() toegevoegd; basisbewerkingen accepteren nu een scalair/kleur-waarde die op alle pixels wordt toegepast.

  • Binair / morfologie — een nieuw binair afbeeldingstype en binary(); lijnbewerkingen en erode() / dilate() accepteren maskers; open() / close() / top_hat() / black_hat() toegevoegd.

  • Filterscartoon, flood_fill, bilateral, laplacian, blur / gaussian_blur-aliassen en adaptieve histogramegalisatie (histeq(adaptive=, clip_limit=, mask=)) toegevoegd.

  • Statistiekget_statistics() / get_histogram() accepteren een kleurdrempelwaardelijst en invert; Otsu histogram.get_threshold() en een Threshold-object toegevoegd.

  • CMSIS CNNimage.classify_object() toegevoegd met een cnn.py-voorbeeld (vervangen door de nn-module in v3.0.0).

  • Threading — de MicroPython _thread-module ingeschakeld.

  • omv-module — versie-informatie toegevoegd (version_string, arch, board_type, board_id); de machine I2C4-bus en speciale wiskundefuncties (erf, gamma, …) ingeschakeld; motor-shield-voorbeelden en veel nieuwe voorbeeldscripts toegevoegd.

Overige wijzigingen en verbeteringen

  • De externe sensorklok van de H7 is verlaagd naar 48 MHz (betere beeldkwaliteit, lagere FPS); lage/hoge JPEG-kwaliteit is nu per board configureerbaar (en afgestemd op de H7); per-board imlib_config.h feature-gating toegevoegd (alle image-functies blijven ingeschakeld op de standaardfirmware); de meegeleverde MicroPython bijgewerkt.

Bugfixes

Beeldverwerking:

  • image.save() zonder bestandsextensie, de gain_db / gain_db_ceiling-mapping voor de OV2640 / OV7725 / OV9650 / MT9V034, overmatige versterking in sharpen(), morfologische randruis, een deling-door-nul in een image-bewerking, en een stack-smash-crash bij een te grote filterkernelgrootte (nu een nette fout) gecorrigeerd.

Systeem:

  • De USB VCP-buffer beschermd met een atomic section (seriële corruptie, #313), USB-connectiviteit op Windows gecorrigeerd, het aankoppelen van het interne flashgeheugen-bestandssysteem als de SD-kaart faalt, de cpufreq set_frequency() PLLP-waarde, en een bug bij het flashen van firmware in de bootloader.

Hardware- en boardondersteuning

  • OpenMV Cam H7 (STM32H7) — nieuw board met een hardware JPEG-encoder en H7 ADC / DAC.

  • machine — de I2C4-bus ingeschakeld.

Breaking API-wijzigingen

Voor de gebruiker zichtbare API-breaks tussen v2.7.0 en v2.8.0. Scope: Python C-modules in modules/ en Python-libraries in scripts/libraries/.

Beide breaking changes zijn minor en treffen alleen scripts die de betreffende functie gebruikten. Elke commit-hash linkt naar de bijbehorende diff op GitHub.

De volgorde van positionele Python-argumenten is nu strikt (minor)

Argumentparsing in de Python C-modules (image / sensor / fir / gif / lcd / mjpeg) leest nu positionele argumenten vóór keywords en zet de positionele volgorde vast. In combinatie met de nieuwe keyword-argumenten op de tekenmethoden (draw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints() die thickness / fill / scale / size krijgen) moet code die parameters positioneel in de verkeerde volgorde meegaf — of een positionele color na een van de nieuwe argumenten meegaf — keyword-argumenten of de gedocumenteerde positionele volgorde gebruiken.

Commits: e0e112468, fc74e70c3

image.mask_ellipse() verwijderd (minor)

image.mask_ellipse() is verwijderd. Scripts die het aanriepen moeten de aanroep verwijderen of in plaats daarvan een expliciete ROI / maskerafbeelding gebruiken.

Commits: d7159fba3

Migratiechecklist

Geef argumenten per keyword mee (of in de gedocumenteerde positionele volgorde), met name color op de tekenmethoden (de argumentvolgorde-wijziging), en verwijder image.mask_ellipse()-aanroepen (de mask_ellipse-verwijdering). Alle overige scripts draaien ongewijzigd.