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-APIset_auto_gain() / set_auto_exposure() / set_auto_whitebal() använder nu dB / mikrosekunder, med matchande get_gain_db() / get_exposure_us() / get_rgb_gain_db().

  • Faskorrelation — omarbetad find_displacement() med rotation / skala samt find_rotscale() / linpolar() / logpolar().

  • SSIMimage.get_similarity() strukturell likhet.

  • Extra bildbuffertarsensor.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 AprilTag z_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(), ett gain_db_ceiling-nyckelord på set_auto_gain(), MT9V034-stöd för hmirror / vflip samt sensor.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 filtren mean() / 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 nu uart.ini vid uppstart för att aktivera en REPL-UART.

Övriga ändringar och förbättringar

  • get_regression() fick nyckelorden area_threshold / pixels_threshold och 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 i logpolar / linpolar samt att illuminvar() 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 vid snapshot() (så att copy_to_fb med en annan upplösning, FB-storleksändring och pooling för optiskt flöde fungerar igen), WINC-timeouten för gethostbyname, pydfu clear-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).

Commits: c78f91b42, 213396d09

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:

  1. Porta set_auto_gain() till gain_db= + get_gain_db() och hantera ValueError (auto-förstärkningsomarbetningen).

  2. Porta set_auto_exposure() till exposure_us= + get_exposure_us() (auto-exponeringsomarbetningen).

  3. Uppdatera find_displacement() till förskjutningsobjektet och döp om FFT-bildstorlekskonstanterna (find_displacement-omarbetningen).

  4. Porta set_auto_whitebal() till rgb_gain_db= + get_rgb_gain_db() (vitbalansomarbetningen) och sluta kontrollera returvärdet från set_hmirror() / set_vflip() (spegel/vänd-ändringen).

  5. Skicka med en firmware-sökväg till WINC fw_*-verktygen (WINC-verktygsändringen).

  6. Skicka med en 28x28-roi till find_number() (find_number-ändringen) och justera AprilTag-vinkelmatematiken för det omvända z_rotation()-tecknet (z_rotation-ändringen).

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