v4.5.9

v4.5.9 為沒有硬體 JPEG 編碼器的開發板帶來原始預覽串流、可釋放更多 RAM 的硬體感測器裁切、更快的 Helium 加速去拜耳化,以及一批相機/USB 除錯修正。它同時變更了 AprilTag 結果 API 與預設的 AprilTag 系列集合,因此請閱讀以下的破壞性變更。

重點摘要

  • 原始預覽串流——沒有硬體 JPEG 編碼器的開發板現在可將縮小的原始影格傳送至 IDE/主機,而不會無法預覽。

  • 硬體感測器裁切——設定較小的影格尺寸現在可降低每個緩衝區的記憶體用量,並為 fb_alloc() 釋放 RAM。

  • 更快的去拜耳化——Bayer→RGB/灰階轉換現在在 Cortex-M55 開發板上使用 Helium-SIMD 加速。

  • 破壞性變更:AprilTag 結果物件已改為屬性存取,且預設的 AprilTag 系列集合已縮減(請參閱 AprilTag 變更AprilTag 系列變更)。

新功能

  • 原始預覽串流——沒有硬體 JPEG 編碼器的開發板可繞過 JPEG,將縮小的原始影格(上限約 60 KB)串流至 IDE/主機,使這些開發板上的即時預覽得以運作。

其他變更與改進

  • 硬體裁切現在已在所有 STM32/NXP 開發板(Giga、Nicla Vision、Portenta H7、OpenMV 1–4 / 4 Plus / Pure Thermal / RT1060)上啟用。當設定影格尺寸或視窗時,每個緩衝區的記憶體會縮減為裁切後的大小,為 fb_alloc() 釋放更多 RAM。

  • 更快的去拜耳化——Bayer→RGB565/灰階轉換現在在 Cortex-M55 開發板(例如 RT1060)上使用 ARM Helium/MVE SIMD 加速,並共用 SIMD JPEG 編碼器路徑。

  • 更快的 IDE 除錯——除錯器現在會在可行時直接從 USB 堆疊傳輸資料,避免額外的複製。

  • MicroPython 子模組已更新——開發板可調整 TinyUSB CDC 緩衝區大小,另有 GC 與建置規則修正。

錯誤修正

相機與感測器:

  • 修正 OV7725 的 Bayer/CFA 圖樣(GBRG → BGGR),修復 OV7725 相機上去拜耳化的色彩輸出;OV7725 現在會回報 Bayer 像素格式,而僅支援 Bayer 的感測器現在會回報每像素 1 位元組的來源深度。

  • 修正原始/Bayer 影格緩衝區大小計算。

機器學習:

  • TensorFlow Lite Micro 現在在計算暫時張量區域大小時會使用 GC 堆積的可用記憶體,以防止在影格緩衝區記憶體有限的開發板上發生模型載入配置失敗。

主機 / IDE:

  • 修正 TinyUSB 開發板上的 USB 除錯 CDC 緩衝區處理,使序列/除錯吞吐量更可靠。

  • tools/pyopenmv:修正 RGB565 位元組順序、新增 scale 引數,且影格緩衝區工具現在會回報影像尺寸/格式。

硬體與開發板支援

  • OV7725 現在會回報 Bayer 像素格式(正確的原始/CFA 處理)。

  • 已在 STM32/NXP 開發板系列中啟用硬體裁切。

破壞性 API 變更

v4.5.8 與 v4.5.9 之間的使用者可見 API 破壞性變更。範圍:modules/ 中的 Python C 模組與 scripts/libraries/ 中的 Python 函式庫。

每項變更皆標註其影響程度:

  • minor(次要)——API 範圍狹窄;僅影響使用到它的指令碼。

  • behavior(行為)——API 相同但結果不同;請重新檢查經過調校的指令碼。

變更依影響程度按該順序分組。若您只想移植程式碼,請直接跳至結尾的 遷移檢查清單。每個提交雜湊皆連結至其在 GitHub 上的差異。

AprilTag 結果物件與 set_buffers (minor)

find_apriltags() 回傳的 AprilTag 結果現在以屬性而非方法的形式公開其資料——請使用 tag.cxtag.cytag.rotationtag.familytag.corners,而非 tag.cx()tag.family() 等。新增了 name(系列名稱字串)與浮點精度的 cxf / cyf 存取器。

另外,自動視訊緩衝區設定也有所變更:set_buffers 取代了 auto_adjust——傳入 -1 可使用最多三個影格尺寸的緩衝區(或可容納的最多數量),傳入 1 則使用整個影格緩衝區。緩衝區大小計算現在會考量每像素位元數,因此 1 bpp 格式可配置更多緩衝區。

提交: c0d4759f87b36e4ef6

ble_advertising 與透過網路的 RPC 已移除 (minor)

ble_advertising 輔助函式庫與 ble_temperature.py 範例已移除——請改用 aioble(已提供一個 aioble 溫度範例)。RPC 網路 master/slave 類別已從 rpc.py 中移除。

提交: 6513276c144a7e579d

AprilTag 系列預設停用 (behavior)

AprilTag 系列現在可在編譯時個別選取,未使用的系列預設停用。在標準開發板上,除非以啟用其他系列的方式重新建置韌體,否則 find_apriltags() 現在只會偵測 TAG36H11 系列。在標準建置上依賴其他系列(TAG16H5TAG25H9 等)的指令碼將會悄然停止偵測它們。

提交: effe12f2c

遷移檢查清單

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

  1. 將 AprilTag 結果存取從方法呼叫改為屬性(tag.cx()tag.cx),並將 auto_adjust 切換為 set_buffersAprilTag / 緩衝區變更)。

  2. aioble 取代 ble_advertising,並移除任何 RPC 網路 master/slave 的使用(移除項目)。

  3. 若您在標準建置上使用 TAG36H11 以外的 AprilTag 系列,請注意它們預設不再被偵測(AprilTag 系列變更)。