v4.0.0¶
v4.0.0 是重大的 v3 → v4 版本。它引入了現代化的多影格 sensor 緩衝 API(雙重/三重緩衝與視訊 FIFO)、影格完成回呼函式、一個含 Portenta 支援的 Bluetooth 模組(NimBLE 堆疊)、初始的 MT9M114 相機驅動程式、MDMA 卸載的相機擷取、image.draw_image() 中的 Bayer/JPEG 支援,並升級至 MicroPython 1.15。舊版的串流模式已被移除,且 sensor.set_windowing() 已重新改寫 — 請閱讀以下的破壞性變更。
重點摘要¶
多影格緩衝 —
sensor新增了雙重緩衝、三重緩衝與視訊 FIFO 模式,以獲得更高、更流暢的影格率。影格完成回呼函式 — 註冊一個在新影格就緒時觸發的回呼函式,用於非阻塞式的擷取流程。
Bluetooth — 一個建構於 NimBLE 堆疊上的
bluetooth模組,在 Arduino Portenta H7 上啟用(並附 BLE 範例)。MT9M114 — 初始的相機感測器驅動程式。
更快的擷取 — 相機資料擷取的 MDMA 卸載;
draw_image()現在可接受 Bayer 與 JPEG 來源/目標。MicroPython 1.15 — 內建的 MicroPython 已從 1.13 更新至 1.15。
破壞性: 舊版的串流模式已被移除,且
sensor.set_windowing()已重新改寫 — 請參閱破壞性變更。
新功能¶
Sensor 多重緩衝 — 新增了
sensor.set_framebuffers()/sensor.get_framebuffers()以及SINGLE_BUFFER/DOUBLE_BUFFER/TRIPLE_BUFFER/VIDEO_FIFO模式,並新增了sensor.get_frame_available()用於雙重、三重與視訊 FIFO 擷取。影格完成回呼函式 — 新增了
sensor.set_frame_callback(),讓每個新影格完成時都能執行一個 Python 回呼函式。Bluetooth — 新增了一個以 NimBLE 堆疊為後端的
bluetooth模組(NimBLE 子模組、CYW-BT 驅動程式),在 Arduino Portenta H7 上啟用並附 BLE 範例。MT9M114 — 新增了初始的 MT9M114 相機感測器驅動程式。
draw_image — 新增了去馬賽克支援與 JPEG 複製支援,因此
image.draw_image()可接受 Bayer 與 JPEG 來源/目標影像。MDMA 擷取卸載 — 相機資料擷取已卸載至 MDMA,以獲得更高的吞吐量。
現在可透過傳入
-1來停用色彩調色盤引數(因為None已保留作為有效引數)。
其他變更與改進¶
切換至新的軟體 I2C 實作;與 MicroPython 上游同步;每個開發板各自的 ulab 設定;為 OpenMV 2 啟用基本的內建模組;更公平的影格緩衝區讀出鎖定;互斥鎖支援已擴充至 Cortex-M0/M0+ 並具備鎖定逾時。
錯誤修正¶
相機與影像處理:
修正了 Pure Thermal 開發板上 FLIR Lepton 初始化的可靠性、ImageIO 的 JPEG 緩衝區/暫停處理、HM01B0 的 vflip/hmirror 設定、影像失效時的 JPEG 緩衝區清空,以及在 framesize 無效時被設定的
cropped旗標。
系統與連線:
修正了 USB 命令的排空與重置至 bootloader 的命令、互斥鎖初始化、UART 時脈來源、FatFS 的 code-page 定義、WINC1500 的頻外 ACK 處理、WiFi 除錯,以及 Nano33 的 USB PID;隔離了專用的類比焊墊。
硬體與開發板支援¶
MT9M114 相機感測器(初始驅動程式)。
Arduino Portenta H7 — 已啟用 Bluetooth(NimBLE)並附 BLE 範例。
Arduino Nano RP2040 Connect / Nano 33 BLE Sense — 在不支援之處停用 WiFi 除錯旗標;新增閃爍範例;修正 USB PID。
破壞性的 API 變更¶
v3.9.4 與 v4.0.0 之間使用者可見的 API 破壞性變更。範圍:modules/ 中的 Python C 模組與 scripts/libraries/ 中的 Python 函式庫。
每項變更都標記了其影響程度:
重大 — 影響大多數指令碼;您幾乎一定需要移植程式碼。
次要 — 範圍狹窄的 API;僅影響使用它的指令碼。
行為 — 相同的 API,不同的結果;請重新檢查已調校的指令碼。
變更依該順序依影響程度分組。如果您只想移植程式碼,請跳至結尾的 移植檢查清單。每個提交雜湊都連結到其在 GitHub 上的差異。
移除串流模式 (重大)¶
舊版的 sensor 串流模式已被移除,改採新的多影格緩衝 API。啟用串流模式的程式碼必須改用 sensor.set_framebuffers() 搭配 DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO,並改以 sensor.snapshot() / sensor.get_frame_available() 來驅動擷取。
提交: a42f3a647
sensor.set_windowing() 重新改寫 (行為)¶
sensor.set_windowing() 變得更具彈性:它現在接受多種引數形式(一個區域元組、或置中的寬度/高度、或 x, y, w, h),並相對於目前的解析度解析視窗。以舊有固定形式傳遞視窗引數的指令碼可能會選取到不同的區域,應重新檢查。
提交: 3e9c43554
MicroPython 1.13 → 1.15 (行為)¶
內建的 MicroPython 核心已從 1.13 更新至 1.15(經由 1.14)。標準函式庫與語言行為依循上游 MicroPython 1.15;請重新檢查依賴特定版本 micropython / 標準模組行為的指令碼。
移除 ImageIO 的 update_jpeg_buffer 引數 (次要)¶
ImageIO 的 JPEG 緩衝區更新已重新改寫,改為從影像來源引數推導出緩衝區,並移除了明確的 update_jpeg_buffer 引數。向 ImageIO 傳遞 update_jpeg_buffer 的指令碼必須移除該引數。
提交: 5c6937bd1
移植檢查清單¶
若要乾淨地移植至 v4.0.0,通常需要:
將任何對已移除串流模式的使用替換為新的
sensor.set_framebuffers()多重緩衝 API(移除串流模式)。針對重新改寫、更具彈性的引數處理重新檢查
sensor.set_windowing()的呼叫(視窗變更)。針對 MicroPython 1.15 重新驗證依賴特定版本 MicroPython 行為的指令碼(MicroPython 升級)。
從 ImageIO 呼叫中移除
update_jpeg_buffer引數(ImageIO 變更)。
所有其他指令碼皆可原封不動地執行。