v3.3.0

v3.3.0 is een enorme release. Deze voegt volledige ondersteuning toe voor de FLIR Lepton warmtecamera met een nieuwe sensor.ioctl()-interface en kleurenpaletten, een tv-module voor SPI-video-uitvoer, getriggerde global-shutter-modus, een grote reeks nieuwe image-teken-/analysemethoden (gamma_corr(), draw_ellipse(), draw_edges(), veel blob-eigenschappen) en nieuwe ToF-/motor-/linalg-bibliotheken. De cpufreq-API is herzien en sensor.set_framesize() werpt nu een uitzondering op — lees de breaking changes hieronder.

Hoogtepunten

  • FLIR Lepton — volledige ondersteuning voor warmtecamera’s via de nieuwe sensor.ioctl()-interface, kleurenpaletten en image.to_rainbow().

  • tv-module — SPI-tv / composiet-video-uitvoer.

  • Getriggerde global-shutter-modus — getriggerde MT9V034-opname via sensor.ioctl().

  • Beeldverwerkinggamma_corr(), draw_ellipse(), draw_edges(), alpha-blending in draw_image() en veel nieuwe blob-eigenschappen.

  • Nieuwe bibliotheken — VL53L1X ToF-afstand, TB6612 motoraandrijving, micro-linalg.

  • Breaking: de cpufreq-API is herzien, sensor.set_framesize() werpt nu een uitzondering bij mislukking, sensor.alloc_extra_fb() ondersteunt geen Bayer/JPEG meer en de positionele argumenten van image.replace() zijn verschoven — zie de breaking changes.

Nieuwe functies

  • FLIR Leptonsensor.ioctl() toegevoegd voor sensorspecifieke besturing en een volledige set Lepton-ioctls (radiometrie, refresh/resolutie, run-command, set/get attribuut, FPA/AUX-temperatuur in °C, meetmodus/-bereik, breedte/hoogte), sensor.set_color_palette() / sensor.get_color_palette() met sensor.PALETTE_RAINBOW / PALETTE_IRONBOW, image.to_rainbow() en Lepton-voorbeeldscripts (27-Lepton).

  • Getriggerde modusIOCTL_SET_TRIGGERED_MODE / IOCTL_GET_TRIGGERED_MODE voor getriggerde global-shutter-opname met de MT9V034, met voorbeelden voor hoge FPS en getriggerde modus.

  • tv-module — bindings toegevoegd voor SPI-tv / composiet-video-uitvoer.

  • Beeldverwerkingimage.gamma_corr(), image.draw_ellipse(), image.draw_edges() en alpha-blending in draw_image() toegevoegd, een mask=-keyword op clear(), mask_rectangle() / mask_circle() / mask_ellipse() opnieuw toegevoegd, rotatie-/hmirror-/vflip-keywords op draw_string() / draw_text(), een transpose-keyword (plus de aliassen assign / set) op replace(), copy() met x_scale / y_scale plus crop() / scale(), een Image()-constructor op basis van afmetingen, het sensor.BINARY-pixformat, geëxporteerde kleurruimte-conversiefuncties en veel nieuwe blob-eigenschappen (corners, perimeter, roundness, elongation, extent, compactness, solidity, convexity, enclosing_circle, enclosed_ellipse, rotatie).

  • Bibliotheken — de vl53l1x ToF-afstandssensordriver, de tb6612 motoraandrijving (met voorbeelden voor DC-motor en stappenmotor met het Motor-Shield) en een micro-linalg-bibliotheek (ulinalg / umatrix) toegevoegd.

  • FatFS bijgewerkt naar FF13C (exFAT-geschikt).

Overige wijzigingen en verbeteringen

  • De standaard JPEG-kwaliteit verbeterd (middenwaarde van laag–hoog in plaats van een hardgecodeerde waarde); in-place beeldbewerkingen vereisen niet langer dat de afbeelding als eerste argument wordt herhaald; draw_string() accepteert niet-gehele schaalwaarden.

Bugfixes

Camera en sensoren:

  • Opstarthang van de Lepton 3.5 verholpen (timeout + herstel) en de reset-betrouwbaarheid, MT9V034 set_framesize() vóór set_pixformat() (volgorde van aanroepen maakt niet langer uit), MT9V034 WVGA op de STM32H7, het autobelichtingsbereik en de shadow-register-updates van de MT9V034, en de H7 ADC-bug.

Beeldverwerking:

  • Een ongeldige geheugentoegang in find_apriltags() verholpen, copy() bij het kopiëren van een geschaalde afbeelding naar de hoofd-framebuffer, de framebuffer-toewijzing van to_grayscale() / to_rgb565(), de len() van het keypoint-object, de afhandeling van JPEG-MCU-grenzen, het parsen van de drempelwaardelijst in binary() en het accepteren van keypoint-tuples door draw_keypoints().

Systeem:

  • Lekken door onbalans in fb_alloc mark/free over image / fir / lcd / tv / nn-methoden verholpen, py_assert geeft nu framebuffer-geheugen vrij bij opgevangen uitzonderingen (#417), de UART-overrun-vlag (ORE) wordt gewist zodat overruns UART-leesacties niet langer blokkeren, de RTC-IRQ-handler verholpen en het Windows-cascade_convert.py-hulpprogramma verholpen.

Hardware- en bordondersteuning

  • FLIR Lepton warmtecamera.

  • TV-shield — SPI-tv / composiet-video-uitvoer.

  • Getriggerde modus voor global-shutter (MT9V034).

Breaking API-wijzigingen

Voor de gebruiker zichtbare API-wijzigingen tussen v3.2.0 en v3.3.0. Reikwijdte: Python C-modules in modules/ en Python-bibliotheken in scripts/libraries/.

Elke wijziging is getagd met de impact ervan:

  • major — treft de meeste scripts die de functie gebruikten; je zult code moeten porten.

  • minor — beperkte API; treft alleen scripts die deze gebruikten.

  • behavior — dezelfde API, andere resultaten; controleer afgestemde scripts opnieuw.

Wijzigingen zijn in die volgorde gegroepeerd per impact. Als je alleen je code wilt porten, ga dan naar de migratiechecklist aan het einde. Elke commit-hash linkt naar de bijbehorende diff op GitHub.

cpufreq-API herzien (major)

De cpufreq-module is herzien voor H7-ondersteuning. De constanten cpufreq.CPUFREQ_120MHZ / 144 / 168 / 192 / 216MHZ en cpufreq.get_frequency() zijn verwijderd. cpufreq.set_frequency() neemt nu een gewoon geheel getal in MHz (bijv. cpufreq.set_frequency(120)), en cpufreq.get_current_frequencies() / cpufreq.get_supported_frequencies() zijn toegevoegd.

Commits: 6babf84a1

Positionele argumenten van image.replace() verschoven (minor)

image.replace() heeft er een transpose-argument bij gekregen, waardoor het positionele mask-argument verschoof van positie 4 naar positie 5. Code die mask positioneel doorgaf (bijv. img.replace(src, hmirror, vflip, mask)) moet overschakelen naar de keyword-vorm img.replace(src, mask=mask).

Commits: dbe7bf059

sensor.alloc_extra_fb() accepteert geen Bayer/JPEG meer (minor)

sensor.alloc_extra_fb() accepteert niet langer sensor.BAYER of sensor.JPEG (het ondersteunt nu ook sensor.BINARY). Code die extra framebuffers in Bayer- of JPEG-formaat toewees, moet GRAYSCALE / RGB565 gebruiken (of de buffer op een andere manier toewijzen).

Commits: f9e6b3fe0

sensor.set_framesize() werpt een uitzondering bij mislukking (behavior)

sensor.set_framesize() werpt nu een ValueError wanneer de framesize niet wordt ondersteund, in plaats van False terug te geven. Code die de False-retourwaarde controleerde, moet in plaats daarvan de ValueError-uitzondering opvangen.

Commits: b0442633e

Migratiechecklist

Voor een schone port naar v3.3.0 is het gebruikelijke werk:

  1. Port cpufreq-code naar set_frequency() met geheel getal in MHz en naar get_current_frequencies() / get_supported_frequencies() (de cpufreq-herziening).

  2. Geef mask aan image.replace() door als keyword (de replace-wijziging).

  3. Wijs extra framebuffers toe als GRAYSCALE / RGB565 in plaats van Bayer/JPEG (de alloc_extra_fb-wijziging).

  4. Vang een ValueError op rond sensor.set_framesize() in plaats van te controleren op False (de set_framesize-wijziging).

Alle overige scripts draaien ongewijzigd.