v4.5.1

v4.5.1 新增了影像方向/長寬比繪製提示、直接從檔案路徑載入影像、GC2145 廣視野 ioctl,以及全新的背光控制器 API。它也重新設計了 Image() 建構式、display API 與模組引數解析——請閱讀下方的破壞性變更。

重點摘要

  • 繪製提示——draw_image() 新增了方向(HMIRROR/VFLIP/TRANSPOSEROTATE_90/180/270)與長寬比縮放(SCALE_ASPECT_KEEP/EXPAND/IGNORE)提示。

  • 從磁碟載入影像——draw_image() / display.write() 接受檔案路徑字串。

  • 背光控制——全新 DACBacklight / PWMBacklight 類別與一個顯示器 backlight= 引數。

  • 破壞性變更: Image() 建構式、display API 與模組引數解析已變更——詳見破壞性變更。

新功能

  • draw_image() 方向提示——image.HMIRRORimage.VFLIPimage.TRANSPOSE,外加便利的 image.ROTATE_90 / ROTATE_180 / ROTATE_270

  • draw_image() 長寬比提示——image.SCALE_ASPECT_KEEP / SCALE_ASPECT_EXPAND / SCALE_ASPECT_IGNORE,分別用於符合/擴展/拉伸。

  • 調色盤常數——image.PALETTE_RAINBOWimage.PALETTE_IRONBOW(已移入 image 模組)。

  • 廣視野——全新 sensor.IOCTL_SET_FOV_WIDE / IOCTL_GET_FOV_WIDE ioctl(在 GC2145 上,可達 5 倍感測器縮放)。

  • 從磁碟載入——draw_image()display.write() 接受來源影像的檔案路徑字串,直接從儲存裝置載入。

  • 背光控制器——全新 DACBacklightPWMBacklight 類別(可從 display 匯入),以及 SPI/並列顯示器建構式上一個僅限關鍵字的 backlight= 引數。

其他變更與改進

  • ST7701 DSI 顯示器驅動程式已移入其自有的 st7701.py 模組(仍可透過 from display import * 匯入),並凍結於 Arduino Giga 上;lsm9ds1 IMU 驅動程式凍結於 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 建構式的引數順序(bgrbyte_swaptriple_buffer 被套用到錯誤的參數上)。

  • 修正了以指定矩形繪製影像時 TV 擴充板的影像損壞,以及錄製縮放影格時不正確的 MJPEG 影格邊界。

網路:

  • WINC WiFi AP 模式不再強制執行過時的僅限 WEP 限制——開放式與 WPA AP 模式可在正確的 PSK 處理下運作。

硬體與開發板支援

  • OpenMV RT1060——FSYNC 接腳與修正後的 SPI4 接腳。

  • Arduino GIGA——QSPI 可靠性權宜處理;ST7701 顯示器已凍結納入。

  • Arduino Nano 33 BLE Sense——lsm9ds1 IMU 驅動程式已凍結納入。

破壞性 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 建構式已改寫為關鍵字引數(heightpixformatbuffer=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 字串)。

提交: 6752c95ac1617370928178c237cb6cdf8de1

背光範圍、縮放與僅限關鍵字引數 (behavior)

Display.backlight() 現在接受 0–100 的強度(0 = 關閉,100 = 全亮)而非 0–255,超出範圍會引發 ValueError。整數 x_scale/y_scale 值現在被視為乘性縮放係數(與浮點數相同),而非目標像素尺寸——這會影響 fir.snapshot()/draw_ir()tof.snapshot()/ draw_depth()displaytv 縮放。sensorfirtoftvmjpeggifimageiotfaudio 模組的引數解析已統一,使數個先前為位置引數的選項變為僅限關鍵字(名稱、預設值與行為在其餘方面維持不變)。

提交: 391ec443f8bd25d6cd47731265608bf62a32a4c0f20bf9b411a66d3d679f5a6d15fc6b8d555e67ecd

遷移檢查清單

若要乾淨地移植到 v4.5.1,通常的工作為:

  1. Image() 建構更新為新的關鍵字形式、讓 display.write() 不再使用 x_size/y_size,並將 WINC.connect()essid 重新命名為 ssid(處理新的以 bytes 為基礎的掃描元組)(建構式/display/WINC 變更)。

  2. Display.backlight() 呼叫重新縮放至 0–100、重新檢查任何整數 x_scale/y_scale 用法,並將先前為位置引數的模組選項以關鍵字傳入(行為變更)。