v3.3.0

v3.3.0 är en enorm utgåva. Den lägger till fullt stöd för FLIR Lepton-värmekamera med ett nytt sensor.ioctl()-gränssnitt och färgpaletter, en tv-modul för SPI-videoutmatning, global-shutter-utlöst läge, en stor uppsättning nya image-metoder för ritning/analys (gamma_corr(), draw_ellipse(), draw_edges(), många blob-egenskaper) samt nya bibliotek för ToF, motorer och linalg. cpufreq-API:et omarbetades och sensor.set_framesize() ger nu ett undantag — läs de brytande ändringarna nedan.

Höjdpunkter

  • FLIR Lepton — fullt stöd för värmekamera via det nya sensor.ioctl()-gränssnittet, färgpaletter och image.to_rainbow().

  • tv-modul — SPI-TV / composite-videoutmatning.

  • Global-shutter-utlöst läge — MT9V034-utlöst infångning via sensor.ioctl().

  • Bildbehandlinggamma_corr(), draw_ellipse(), draw_edges(), alfablandning i draw_image() och många nya blob-egenskaper.

  • Nya bibliotek — VL53L1X ToF-avstånd, TB6612-motordrivrutin, micro-linalg.

  • Brytande: cpufreq-API:et omarbetades, sensor.set_framesize() ger nu ett undantag vid fel, sensor.alloc_extra_fb() släppte Bayer/JPEG och de positionsbaserade argumenten i image.replace() förskjöts — se de brytande ändringarna.

Nya funktioner

  • FLIR Lepton — lade till sensor.ioctl() för sensorspecifik styrning och en komplett uppsättning Lepton-ioctls (radiometri, uppdatering/upplösning, kör-kommando, sätt/hämta attribut, FPA/AUX-temperatur i °C, mätläge/-intervall, bredd/höjd), sensor.set_color_palette() / sensor.get_color_palette() med sensor.PALETTE_RAINBOW / PALETTE_IRONBOW, image.to_rainbow() samt Lepton-exempelskript (27-Lepton).

  • Utlöst lägeIOCTL_SET_TRIGGERED_MODE / IOCTL_GET_TRIGGERED_MODE för MT9V034 global-shutter-utlöst infångning, med exempel för hög FPS och utlöst läge.

  • tv-modul — lade till bindningar för SPI-TV / composite-videoutmatning.

  • Bildbehandling — lade till image.gamma_corr(), image.draw_ellipse(), image.draw_edges(), alfablandning i draw_image(), ett mask=-nyckelord på clear(), återinförde mask_rectangle() / mask_circle() / mask_ellipse(), nyckelord för rotation / hmirror / vflip på draw_string() / draw_text(), ett transpose-nyckelord (och aliasen assign / set) på replace(), copy() med x_scale / y_scale plus crop() / scale(), en Image()-konstruktor från dimensioner, pixelformatet sensor.BINARY, exporterade funktioner för färgrymdskonvertering samt många nya blob-egenskaper (corners, perimeter, roundness, elongation, extent, compactness, solidity, convexity, enclosing_circle, enclosed_ellipse, rotation).

  • Bibliotek — lade till drivrutinen vl53l1x för ToF-avståndssensor, motordrivrutinen tb6612 (med exempel för DC-motor och stegmotor på Motor-Shield) samt ett micro-linalg-bibliotek (ulinalg / umatrix).

  • Uppgraderade FatFS till FF13C (exFAT-kapabel).

Övriga ändringar och förbättringar

  • Förbättrade standardkvaliteten för JPEG (mittintervall mellan låg–hög i stället för ett hårdkodat värde); operationer på bilder på plats kräver inte längre att bilden upprepas som första argument; draw_string() accepterar nu skalvärden som inte är heltal.

Buggfixar

Kamera och sensorer:

  • Fixade Lepton 3.5-startupphängning (timeout + återställning) och tillförlitlighet vid återställning, MT9V034 set_framesize() före set_pixformat() (anropsordningen spelar inte längre någon roll), MT9V034 WVGA på STM32H7, MT9V034:s autoexponeringsintervall och uppdateringar av skuggregister samt H7 ADC-buggen.

Bildbehandling:

  • Fixade en ogiltig minnesåtkomst i find_apriltags(), copy() vid kopiering av en skalad bild till huvudbildbufferten, bildbuffertallokering i to_grayscale() / to_rgb565(), len() på nyckelpunktsobjektet, hantering av JPEG MCU-gränser, parsning av tröskelvärdeslistor i binary() samt att draw_keypoints() accepterar nyckelpunktstupler.

System:

  • Fixade läckor från obalans i fb_alloc mark/free över metoder i image / fir / lcd / tv / nn, fick py_assert att frigöra bildbuffertminne vid fångade undantag (#417), rensade UART-överskridningsflaggan (ORE) så att överskridningar inte längre låser UART-läsningar, fixade RTC IRQ-hanteraren samt fixade Windows-verktyget cascade_convert.py.

Hårdvaru- och kortstöd

  • FLIR Lepton-värmekamera.

  • TV-shield — SPI-TV / composite-videoutmatning.

  • Global-shutter (MT9V034)-utlöst läge.

Brytande API-ändringar

Användarsynliga API-brytningar mellan v3.2.0 och v3.3.0. Omfattning: Python C-moduler i modules/ och Python-bibliotek i scripts/libraries/.

Varje ändring är märkt med sin påverkan:

  • major — påverkar de flesta skript som använde funktionen; du behöver porta kod.

  • minor — smalt API; påverkar endast skript som använde det.

  • behavior — samma API, andra resultat; kontrollera om finjusterade skript.

Ändringarna grupperas efter påverkan i den ordningen. Om du bara vill porta din kod, hoppa till migreringschecklistan i slutet. Varje commit-hash länkar till sin diff på GitHub.

cpufreq-API:et omarbetat (major)

cpufreq-modulen omarbetades för H7-stöd. Konstanterna cpufreq.CPUFREQ_120MHZ / 144 / 168 / 192 / 216MHZ och cpufreq.get_frequency() togs bort. cpufreq.set_frequency() tar nu ett vanligt MHz-heltal (t.ex. cpufreq.set_frequency(120)), och cpufreq.get_current_frequencies() / cpufreq.get_supported_frequencies() lades till.

Commits: 6babf84a1

image.replace() positionsbaserade argument förskjutna (minor)

image.replace() fick ett transpose-argument, vilket förskjuter det positionsbaserade mask-argumentet från position 4 till position 5. Kod som skickade mask positionellt (t.ex. img.replace(src, hmirror, vflip, mask)) måste byta till nyckelordsformen img.replace(src, mask=mask).

Commits: dbe7bf059

sensor.alloc_extra_fb() accepterar inte längre Bayer/JPEG (minor)

sensor.alloc_extra_fb() accepterar inte längre sensor.BAYER eller sensor.JPEG (den stöder nu även sensor.BINARY). Kod som allokerade extra bildbuffertar i Bayer- eller JPEG-format måste använda GRAYSCALE / RGB565 (eller allokera bufferten på annat sätt).

Commits: f9e6b3fe0

sensor.set_framesize() ger ett undantag vid fel (behavior)

sensor.set_framesize() ger nu ett ValueError när bildrutestorleken inte stöds i stället för att returnera False. Kod som kontrollerade returvärdet False måste i stället fånga undantaget ValueError.

Commits: b0442633e

Migreringschecklista

För en ren portning till v3.3.0 är det typiska arbetet:

  1. Porta cpufreq-kod till set_frequency() med heltals-MHz och get_current_frequencies() / get_supported_frequencies() (cpufreq-omarbetningen).

  2. Skicka mask till image.replace() som ett nyckelord (replace-ändringen).

  3. Allokera extra bildbuffertar som GRAYSCALE / RGB565 i stället för Bayer/JPEG (alloc_extra_fb-ändringen).

  4. Fånga ValueError runt sensor.set_framesize() i stället för att kontrollera mot False (set_framesize-ändringen).

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