v1.1.0¶
v1.1.0 是奠定基礎的架構版本:它捨棄了早期的自訂周邊模組,改採標準的 MicroPython 內建模組,將影像 API 移入 image 模組、將影格速率時鐘移入 time,並新增了內建的 Haar 級聯、get_pixel() / set_pixel()、OpenMV 2 開發板支援,以及 USB-CDC 除錯。這是一個有大量破壞性變更、定義 API 的版本 — 請閱讀下方的破壞性變更。
重點摘要¶
新功能¶
Image — 新增了
Image.get_pixel(x, y)/set_pixel()以及img[i]下標式像素存取;內建的快閃記憶體 Haar 級聯(HaarCascade("frontalface")/HaarCascade("eye"))以及一個用於限制級聯階段的stages=關鍵字;draw_string()可在灰階影像上運作。Sensor — 新增了
sensor.set_colorbar()、sensor.set_saturation(),以及QQVGA2影格尺寸。mlx—mlx.read(type),可輸出mlx.RAINBOW/mlx.GRAYSCALE。除錯 — 實作了透過 USB CDC 的除錯、一個韌體
fw_version()查詢、各開發板專屬的韌體(OpenMV 1 / OpenMV 2),以及自我測試/色彩條指令碼;致命/剖析錯誤會記錄到快閃記憶體中。
其他變更與改進¶
記憶體不足現在會引發
MemoryError而非OSError;指令碼以例外重新引發的方式執行,因此錯誤會被印出而非導致當機;序列鮑率現在可設定(預設 921600);更大的快閃記憶體檔案系統;感測器像素時脈降低至 54 MHz 以提升擷取穩定性;sensor.reset()僅依賴感測器的軟體重設。
錯誤修正¶
修正了樣板匹配、
find_features()重複回傳第一個物件、SCCB/I2C 暫存器的原子存取、SD 卡晶片偵測、軟體 I2C 接腳對應、fast_cbrtf/ LAB 色彩準確度,以及 OpenMV 1 / 2 上的積分影像/中值濾鏡記憶體使用問題。
硬體與開發板支援¶
OpenMV 2(STM32F427)開發板支援(以及 OpenMV 3 硬體設計);OpenMV 2 上使用 MCO 作為感測器時脈。
破壞性 API 變更¶
v1.0.3-beta 與 v1.1.0 之間使用者可見的 API 破壞性變更。範圍:modules/ 中的 Python C 模組,以及 scripts/libraries/ 中的 Python 函式庫。
每項變更都標註了其影響:
major — 影響大多數使用該功能的指令碼;你需要移植程式碼。
behavior — 相同的 API,但結果不同;請重新檢查經過調校的指令碼。
變更依影響程度依此順序分組。如果你只是想移植程式碼,請跳至最後的 遷移檢查清單。每個提交雜湊都連結到其在 GitHub 上的差異。
移除自訂周邊模組 (major)¶
早期的自訂 clock / file / gpio / led / select / socket / spi / wlan / uart 模組已被移除,改採 MicroPython 內建的 pyb / machine 周邊。請將指令碼移植到標準的 MicroPython 對應項(例如 pyb.Pin / pyb.LED / pyb.SPI / pyb.UART)。
提交: 6d2fafa94
影像 API 移入 image 模組 (major)¶
Image()、HaarCascade() 以及描述子的儲存/載入函式不再是裸的內建函式 — 它們現在位於新的 image 模組中。指令碼必須 import image 並使用 image.Image / image.HaarCascade()。
提交: 54288c535
影格速率時鐘移入 time (major)¶
獨立的 clock 模組已被移除;影格速率時鐘現在位於 time 中。請使用 import time 與 clock = time.clock() — 回傳的物件仍然提供 .tick() / .fps() / .avg() / .reset()。
提交: a8928ca3b
/flash 與 /sd 不再加入 sys.path (behavior)¶
磁碟區標籤/根目錄已固定,且 /flash 與 /sd 不再自動附加至 sys.path。以裸名稱從那些位置匯入輔助模組的指令碼,必須明確地加入路徑(或將模組放置於可被找到的位置)。
提交: 09e77b5da
遷移檢查清單¶
若要乾淨地移植到 v1.1.0,典型的工作如下:
將自訂的
gpio/led/spi/uart/socket/wlan/file/select模組替換為 MicroPython 的pyb/machine(自訂模組的移除)。import image並在Image()/HaarCascade()前加上image.前綴(image 模組的搬移)。使用
import time與clock = time.clock()(clock 的搬移)。如果你曾以裸名稱匯入輔助模組,請明確地將
/flash//sd加入sys.path(sys.path 的變更)。
所有其他指令碼可不經修改地執行。