v2.7.0¶
v2.7.0 moderniserar sensor-API:et för auto-förstärkning / auto-exponering / vitbalans till fysiska enheter (dB / mikrosekunder), gör en genomgripande omarbetning av faskorrelationens find_displacement() (med tillägg av rotation/skala) och lägger till get_similarity() (SSIM), chrominvar() / illuminvar(), extra bildbuffertar och ett MQTT-bibliotek. Det är en stor brytande utgåva — läs de brytande ändringarna nedan.
Höjdpunkter¶
Modernt sensor-API —
set_auto_gain()/set_auto_exposure()/set_auto_whitebal()använder nu dB / mikrosekunder, med matchandeget_gain_db()/get_exposure_us()/get_rgb_gain_db().Faskorrelation — omarbetad
find_displacement()med rotation / skala samtfind_rotscale()/linpolar()/logpolar().SSIM —
image.get_similarity()strukturell likhet.Extra bildbuffertar —
sensor.alloc_extra_fb()/dealloc_extra_fb().MQTT — ett nytt MQTT-bibliotek.
Brytande: sensorns API för förstärkning/exponering/vitbalans,
find_displacement()/ FFT-bildstorlekar,find_number(), WINC-firmwareverktygen och AprilTagz_rotation()har alla ändrats — se de brytande ändringarna.
Nya funktioner¶
Sensor — lade till
sensor.get_gain_db(),sensor.get_exposure_us(),sensor.get_rgb_gain_db(), ettgain_db_ceiling-nyckelord påset_auto_gain(), MT9V034-stöd förhmirror/vflipsamtsensor.alloc_extra_fb()/sensor.dealloc_extra_fb()för extra bildbuffertar i RAM.Image — lade till
remove_shadows(),min()/max()(bildruteskillnad),get_similarity()(SSIM) med ett exempel på strukturell likhet,chrominvar()/illuminvar(),find_rotscale(),linpolar()/logpolar(), nyckelorden threshold / offset / invert på de adaptiva filtrenmean()/mode()/median()/midpoint(),len()/ indexering på keypoints-objektet samt en.match()-accessor på keypoint-matchningsobjektet.Bibliotek / nätverk — lade till ett MQTT-bibliotek (med ett WiFi MQTT-exempel) och ett
network.WINC.MODE_BSP-läge för att programmera WINC-firmware över felsöknings-UART:en.Exempel — lade till lågeffektsskripten
deep_sleep.py/stop_mode.py, avancerat optiskt flöde samt linjär/log-polära exempelskript; firmware tolkar nuuart.inivid uppstart för att aktivera en REPL-UART.
Övriga ändringar och förbättringar¶
get_regression()fick nyckelordenarea_threshold/pixels_thresholdoch en snabbare robust regression (för linjeföljning / racing);get_pixel()stöder nu Bayer-bilder; grundläggande arbete för STM32H7 tillades (CMSIS-headers / HAL / startladdare — H7-kortet är ännu inte användbart); den medföljande WINC1500-firmware uppdaterades (19.4.4 / 19.5.2).
Buggfixar¶
Bildbehandling:
Fixade buggen med diamantsökningens åtkomst utanför gränserna i
find_template(), korruption ilogpolar/linpolarsamt attilluminvar()spårade ur vid färgvärden nära noll.
Sensor och system:
Fixade buggar i automatisk förstärkningsstyrning, återställde
MAIN_FB-storleken vidsnapshot()(så attcopy_to_fbmed en annan upplösning, FB-storleksändring och pooling för optiskt flöde fungerar igen), WINC-timeouten förgethostbyname,pydfuclear-status på H7-startladdaren samt lågeffektslägena stopp/standby.
Hårdvaru- och kortstöd¶
STM32H7 — grundläggande arbete (CMSIS / HAL / startladdare); OpenMV H7-kortet är ännu inte användbart i den här utgåvan.
WINC1500 — uppdaterad medföljande firmware.
Brytande API-ändringar¶
Användarsynliga API-brytningar mellan v2.6.0 och v2.7.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 på nytt.
Ändringarna är grupperade efter påverkan i den ordningen. Om du bara vill porta din kod, hoppa till migrationschecklistan i slutet. Varje commit-hash länkar till sin diff på GitHub.
sensor.set_auto_gain() omarbetad till dB (major)¶
sensor.set_auto_gain() accepterar inte längre heltalsnyckelordet value= och returnerar inte längre True / False. Använd sensor.set_auto_gain(False, gain_db=...) (ett flyttals-dB-värde), läs tillbaka det med nya sensor.get_gain_db() och linda in anropet i try / except eftersom fel nu ger upphov till ValueError.
Commits: b906c5f19
sensor.set_auto_exposure() omarbetad till mikrosekunder (major)¶
sensor.set_auto_exposure() accepterar inte längre heltalsnyckelordet value= och returnerar inte längre True / False. Använd sensor.set_auto_exposure(False, exposure_us=...), läs tillbaka det med nya sensor.get_exposure_us() och hantera ValueError som ges upp vid fel.
Commits: 7be0a7a18
find_displacement() / FFT-bildstorlekar genomgripande omarbetade (major)¶
Faskorrelationen omarbetades genomgripande. image.find_displacement() returnerar nu ett förskjutningsobjekt (med x_translation() / y_translation() — tidigare x_offset / y_offset — plus rotation() / scale() och nya nyckelord logpolar / fix_rotation_scale); det separata rot-skala-objektet togs bort och find_rotscale() lades till. FFT-bildstorlekskonstanterna döptes om/togs bort: sensor.B40x30 togs bort helt, och sensor.B64x32 / B64x64 döptes om till versalerna sensor.B64X32 / B64X64 (med nya B128X64 / B128X128).
sensor.set_auto_whitebal() omarbetad till dB (minor)¶
sensor.set_auto_whitebal() ersatte sitt heltalsnyckelord value=[r, g, b] med rgb_gain_db=[r, g, b] (flyttals-dB) och returnerar nu None (och ger upphov till ValueError vid fel) istället för True / False. Använd nya sensor.get_rgb_gain_db() för att läsa tillbaka förstärkningarna.
Commits: 30ecbdc4f
set_hmirror() / set_vflip() returnerar None (minor)¶
sensor.set_hmirror() och sensor.set_vflip() returnerar nu None och ger upphov till ValueError vid fel istället för att returnera en True / False-status. Ta bort all kod som förgrenar sig på deras returvärde.
Commits: aeb023804
WINC-firmwareverktygen kräver en filsökväg (minor)¶
network.WINC-firmwareverktygen ändrades: wlan.fw_dump() / wlan.fw_update() tar nu ett obligatoriskt argument med firmware-filens sökväg och WINC öppnas i ett programmeringsläge (network.WINC(mode=...)). Uppdatera anrop utan argument till att skicka med en sökväg (t.ex. wlan.fw_update("/winc_19_5_2.bin")).
Commits: fcc3b0b9c
image.find_number() kräver en 28x28-ROI (behavior)¶
image.find_number() (LeNet) kräver nu en exakt 28x28-ROI som ryms inuti bilden och ger upphov till ett fel annars (istället för att köra på en godtycklig/helbilds-ROI). Skicka med en explicit roi=(x, y, 28, 28).
Commits: 4d09a13f3
AprilTag z_rotation()-tecken omvänt (behavior)¶
AprilTag z_rotation() (och relaterade rotation()) använder nu en högerhänt koordinatkonvention, så den returnerade vinkeln är negerad jämfört med tidigare utgåvor. Skript som beror på det gamla tecknet måste invertera värdet eller justera sin vinkelmatematik.
Commits: 7673aaf74
Migrationschecklista¶
För en ren portning till v2.7.0 är det typiska arbetet:
Porta
set_auto_gain()tillgain_db=+get_gain_db()och hanteraValueError(auto-förstärkningsomarbetningen).Porta
set_auto_exposure()tillexposure_us=+get_exposure_us()(auto-exponeringsomarbetningen).Uppdatera
find_displacement()till förskjutningsobjektet och döp om FFT-bildstorlekskonstanterna (find_displacement-omarbetningen).Porta
set_auto_whitebal()tillrgb_gain_db=+get_rgb_gain_db()(vitbalansomarbetningen) och sluta kontrollera returvärdet frånset_hmirror()/set_vflip()(spegel/vänd-ändringen).Skicka med en firmware-sökväg till WINC
fw_*-verktygen (WINC-verktygsändringen).Skicka med en 28x28-
roitillfind_number()(find_number-ändringen) och justera AprilTag-vinkelmatematiken för det omvändaz_rotation()-tecknet (z_rotation-ändringen).
Alla andra skript körs oförändrade.