v4.5.9¶
v4.5.9 tillför rå förhandsvisningsströmning för kort utan en hårdvarubaserad JPEG-kodare, hårdvarubaserad sensorbeskärning för att frigöra mer RAM, snabbare Helium-accelererad debayering samt en samling kamera-/USB-felsökningsfixar. Den ändrar även AprilTag-resultat-API:et och standarduppsättningen av AprilTag-familjer, så läs de brytande ändringarna nedan.
Höjdpunkter¶
Rå förhandsvisningsströmning — kort utan en hårdvarubaserad JPEG-kodare kan nu skicka nedskalade råa bildrutor till IDE:n/värddatorn istället för att misslyckas med förhandsvisningen.
Hårdvarubaserad sensorbeskärning — att ange en mindre bildrutestorlek minskar nu minnet per buffert och frigör RAM för
fb_alloc().Snabbare debayering — konvertering från Bayer till RGB/gråskala är nu Helium-SIMD-accelererad på Cortex-M55-kort.
Brytande: AprilTag-resultatobjektet ändrades till attributåtkomst och standarduppsättningen av AprilTag-familjer minskades (se AprilTag-ändringarna och AprilTag-familjeändringen).
Nya funktioner¶
Rå förhandsvisningsströmning — kort utan en hårdvarubaserad JPEG-kodare kan kringgå JPEG och strömma nedskalade råa bildrutor (begränsade till cirka 60 KB) till IDE:n/värddatorn, så att liveförhandsvisning fungerar på dessa kort.
Övriga ändringar och förbättringar¶
Hårdvarubeskärning är nu aktiverad på alla STM32/NXP-kort (Giga, Nicla Vision, Portenta H7, OpenMV 1–4 / 4 Plus / Pure Thermal / RT1060). När en bildrutestorlek eller ett fönster anges minskas minnet per buffert till den beskurna storleken, vilket frigör mer RAM för
fb_alloc().Snabbare debayering — konvertering från Bayer till RGB565/gråskala är nu ARM Helium/MVE-SIMD-accelererad på Cortex-M55-kort (t.ex. RT1060), med en delad SIMD-JPEG-kodarväg.
Snabbare IDE-felsökning — felsökaren överför nu data direkt från USB-stacken när det är möjligt, vilket undviker en extra kopiering.
MicroPython-submodulen uppdaterad — kort kan ändra storlek på TinyUSB CDC-bufferten, plus GC- och byggregelsfixar.
Buggfixar¶
Kamera och sensorer:
Korrigerade OV7725 Bayer/CFA-mönstret (GBRG → BGGR), vilket åtgärdar debayerad färgutdata på OV7725-kameror; OV7725 rapporterar nu Bayer-pixelformatet, och sensorer med enbart Bayer rapporterar nu ett källdjup på 1 byte per pixel.
Åtgärdade beräkningen av storleken på den råa/Bayer-baserade bildbufferten.
Maskininlärning:
TensorFlow Lite Micro använder nu det lediga minnet i GC-heapen vid dimensionering av den tillfälliga tensorarenan, vilket förhindrar allokeringsfel vid modellinläsning på kort med begränsat bildbuffertminne.
Värddator / IDE:
Åtgärdade hanteringen av USB-felsöknings-CDC-bufferten på TinyUSB-kort för mer tillförlitlig seriell-/felsökningsgenomströmning.
tools/pyopenmv: åtgärdade RGB565-byteordningen, lade till ettscale-argument, och bildbuffertverktyget rapporterar nu bildstorlek/-format.
Hårdvaru- och kortstöd¶
OV7725 rapporterar nu Bayer-pixelformatet (korrekt hantering av rå/CFA).
Hårdvarubeskärning aktiverad över hela STM32/NXP-kortserien.
Brytande API-ändringar¶
Användarsynliga API-brytningar mellan v4.5.8 och v4.5.9. Omfattning: Python-C-moduler i modules/ och Python-bibliotek i scripts/libraries/.
Varje ändring är märkt med sin påverkan:
minor — smalt API; påverkar endast skript som använde det.
behavior — samma API, olika resultat; kontrollera finjusterade skript igen.
Ändringarna är grupperade efter påverkan i den ordningen. Om du bara vill porta din kod kan du hoppa till migreringschecklistan i slutet. Varje commit-hash länkar till sin diff på GitHub.
AprilTag-resultatobjekt och set_buffers (minor)¶
AprilTag-resultat från find_apriltags() exponerar nu sina data som attribut istället för metoder — använd tag.cx, tag.cy, tag.rotation, tag.family, tag.corners istället för tag.cx(), tag.family() osv. Nya accessorer name (familjenamnssträng) och flyttalsprecisionsbaserade cxf / cyf lades till.
Separat ändrades den automatiska videobuffertkonfigurationen: set_buffers ersätter auto_adjust — skicka -1 för att använda upp till tre buffertar i bildrutans storlek (eller så många som får plats) och 1 för att använda hela bildbufferten. Buffertdimensioneringen är nu medveten om bitar per pixel, så fler buffertar kan allokeras för 1 bpp-format.
ble_advertising och RPC-över-nätverk borttagna (minor)¶
Hjälpbiblioteket ble_advertising och exemplet ble_temperature.py togs bort — använd aioble istället (ett aioble-temperaturexempel tillhandahålls). RPC-nätverksklasserna master/slave togs bort från rpc.py.
AprilTag-familjer inaktiverade som standard (behavior)¶
AprilTag-familjer är nu individuellt valbara vid kompileringstid, och de oanvända är inaktiverade som standard. På standardkort detekterar find_apriltags() nu endast TAG36H11-familjen om inte firmware byggs om med andra familjer aktiverade. Skript som förlitar sig på andra familjer (TAG16H5, TAG25H9, …) på ett standardbygge slutar tyst att detektera dem.
Commit: effe12f2c
Migreringschecklista¶
För en ren port till v4.5.9 är det typiska arbetet:
Ändra AprilTag-resultatåtkomst från metodanrop till attribut (
tag.cx()→tag.cx), och bytauto_adjustmotset_buffers(AprilTag-/buffertändringarna).Ersätt
ble_advertisingmedaiobleoch ta bort all användning av RPC-nätverk master/slave (borttagningarna).Om du använder andra AprilTag-familjer än
TAG36H11på ett standardbygge, observera att de inte längre detekteras som standard (AprilTag-familjeändringen).