v4.5.1¶
v4.5.1 新增了影像方向/長寬比繪製提示、直接從檔案路徑載入影像、GC2145 廣視野 ioctl,以及全新的背光控制器 API。它也重新設計了 Image() 建構式、display API 與模組引數解析——請閱讀下方的破壞性變更。
重點摘要¶
繪製提示——
draw_image()新增了方向(HMIRROR/VFLIP/TRANSPOSE、ROTATE_90/180/270)與長寬比縮放(SCALE_ASPECT_KEEP/EXPAND/IGNORE)提示。從磁碟載入影像——
draw_image()/display.write()接受檔案路徑字串。背光控制——全新
DACBacklight/PWMBacklight類別與一個顯示器backlight=引數。破壞性變更:
Image()建構式、displayAPI 與模組引數解析已變更——詳見破壞性變更。
新功能¶
draw_image()方向提示——image.HMIRROR、image.VFLIP、image.TRANSPOSE,外加便利的image.ROTATE_90/ROTATE_180/ROTATE_270。draw_image()長寬比提示——image.SCALE_ASPECT_KEEP/SCALE_ASPECT_EXPAND/SCALE_ASPECT_IGNORE,分別用於符合/擴展/拉伸。調色盤常數——
image.PALETTE_RAINBOW與image.PALETTE_IRONBOW(已移入 image 模組)。廣視野——全新
sensor.IOCTL_SET_FOV_WIDE/IOCTL_GET_FOV_WIDEioctl(在 GC2145 上,可達 5 倍感測器縮放)。從磁碟載入——
draw_image()與display.write()接受來源影像的檔案路徑字串,直接從儲存裝置載入。背光控制器——全新
DACBacklight與PWMBacklight類別(可從display匯入),以及 SPI/並列顯示器建構式上一個僅限關鍵字的backlight=引數。
其他變更與改進¶
ST7701 DSI 顯示器驅動程式已移入其自有的
st7701.py模組(仍可透過from display import *匯入),並凍結於 Arduino Giga 上;lsm9ds1IMU 驅動程式凍結於 Arduino Nano 33 BLE Sense 上。MT9V022 / MT9V034(全域快門)相機現在會套用列雜訊校正以提升影像品質。
i.MX RT USB 大容量儲存磁碟區現在標示為 OpenMV 磁碟。
錯誤修正¶
相機與感測器:
修正了在高於 480 列的影像上進行角點偵測(
find_keypoints()FAST/AGAST)的問題——每列緩衝區現在會依影像高度調整大小。在 i.MX RT(OpenMV RT1060)上新增了 FSYNC 接腳支援,用於影格同步的
snapshot(),並修正了 RT1060 上 SPI4 MOSI/MISO 接腳交換的問題。
顯示與視訊:
修正了
SPIDisplay建構式的引數順序(bgr、byte_swap、triple_buffer被套用到錯誤的參數上)。修正了以指定矩形繪製影像時 TV 擴充板的影像損壞,以及錄製縮放影格時不正確的 MJPEG 影格邊界。
網路:
WINC WiFi AP 模式不再強制執行過時的僅限 WEP 限制——開放式與 WPA AP 模式可在正確的 PSK 處理下運作。
硬體與開發板支援¶
OpenMV RT1060——FSYNC 接腳與修正後的 SPI4 接腳。
Arduino GIGA——QSPI 可靠性權宜處理;ST7701 顯示器已凍結納入。
Arduino Nano 33 BLE Sense——
lsm9ds1IMU 驅動程式已凍結納入。
破壞性 API 變更¶
v4.5.0 與 v4.5.1 之間使用者可見的 API 破壞性變更。範圍:modules/ 中的 Python C 模組與 scripts/libraries/ 中的 Python 函式庫。
每項變更都標註了其影響程度:
minor——範圍狹窄的 API;僅影響使用到它的指令碼。
behavior——API 相同但結果不同;請重新檢查已調校過的指令碼。
變更依影響程度按上述順序分組。若你只想移植程式碼,請直接跳到結尾的 遷移檢查清單。每個提交雜湊都連結到其在 GitHub 上的差異。
Image() 建構式與 display API (minor)¶
image.Image 建構式已改寫為關鍵字引數(height、pixformat、buffer=、copy_to_fb=);它現在可從現有的 bytearray/緩衝區建立影像,而壓縮格式則必須提供緩衝區。display.write() 已重新設計:x_scale/y_scale 現在接受浮點數(縮放比例)或整數(以像素為單位的目標尺寸),而獨立的 x_size/y_size 關鍵字已移除。WINC.connect() 的第一個位置引數已由 essid 重新命名為 ssid,且 WINC WiFi 掃描結果改為 (ssid_bytes, bssid_bytes, channel, rssi, security, N)(SSID/BSSID 現在為 bytes;BSSID 不再是格式化的 MAC 字串)。
背光範圍、縮放與僅限關鍵字引數 (behavior)¶
Display.backlight() 現在接受 0–100 的強度(0 = 關閉,100 = 全亮)而非 0–255,超出範圍會引發 ValueError。整數 x_scale/y_scale 值現在被視為乘性縮放係數(與浮點數相同),而非目標像素尺寸——這會影響 fir.snapshot()/draw_ir()、tof.snapshot()/ draw_depth()、display 與 tv 縮放。sensor、fir、tof、tv、mjpeg、gif、imageio、tf 與 audio 模組的引數解析已統一,使數個先前為位置引數的選項變為僅限關鍵字(名稱、預設值與行為在其餘方面維持不變)。
提交: 391ec443f、8bd25d6cd、477312656、08bf62a32、a4c0f20bf、9b411a66d、3d679f5a6、d15fc6b8d、555e67ecd
遷移檢查清單¶
若要乾淨地移植到 v4.5.1,通常的工作為:
將
Image()建構更新為新的關鍵字形式、讓display.write()不再使用x_size/y_size,並將WINC.connect()的essid重新命名為ssid(處理新的以 bytes 為基礎的掃描元組)(建構式/display/WINC 變更)。將
Display.backlight()呼叫重新縮放至 0–100、重新檢查任何整數x_scale/y_scale用法,並將先前為位置引數的模組選項以關鍵字傳入(行為變更)。