v2.8.0¶
v2.8.0 是一個規模龐大的版本。它讓 OpenMV Cam H7(STM32H7)正式啟用,配備硬體 JPEG 編碼器與 H7 ADC/DAC,並對 image API 進行大幅改寫(繪製粗細/填滿、數學/二進位運算、許多新濾鏡、Otsu 閾值化),加入 MicroPython 執行緒與 omv 版本模組。Python 的引數解析順序已被鎖定,且 image.mask_ellipse() 已被移除 — 請閱讀下方的破壞性變更。
重點摘要¶
新功能¶
OpenMV Cam H7 — STM32H7 主機板支援,配備硬體 JPEG 編碼器、H7 ADC 與 H7 DAC。
繪製 — 新增線條
thickness、形狀fill(矩形/圓形)、文字scale與字距、draw_string()上的mono_space關鍵字、image.draw_arrow(),以及image.draw_image()(精靈圖/遮罩繪製)。數學運算 — 新增
add()、sub()、mul()、div()、min()、max()、difference()、blend()、replace()(搭配hmirror/vflip/mask)與remove_shadows();基本運算現在可接受套用至所有像素的純量/色彩值。二進位/形態學 — 新的二進位影像類型與
binary();線條運算與erode()/dilate()可接受遮罩;新增open()/close()/top_hat()/black_hat()。濾鏡 — 新增
cartoon、flood_fill、bilateral、laplacian、blur/gaussian_blur別名,以及自適應直方圖均衡化(histeq(adaptive=, clip_limit=, mask=))。統計 —
get_statistics()/get_histogram()可接受色彩閾值清單與invert;新增 Otsu 的histogram.get_threshold()與Threshold物件。CMSIS CNN — 新增
image.classify_object()並附上cnn.py範例(在 v3.0.0 中被nn模組取代)。執行緒 — 啟用 MicroPython 的
_thread模組。omv模組 — 新增版本資訊(version_string、arch、board_type、board_id);啟用machine的 I2C4 匯流排與數學特殊函式(erf、gamma、…);新增馬達擴充板範例與許多新的範例指令碼。
其他變更與改進¶
H7 的感測器外部時脈已降至 48 MHz(影像品質較佳、FPS 較低);低/高 JPEG 品質現在可依主機板設定(並已針對 H7 調校);新增每塊主機板的
imlib_config.h功能閘控(在原廠韌體中所有影像函式仍維持啟用);更新內建的 MicroPython。
錯誤修正¶
影像處理:
修正了無副檔名的
image.save()、OV2640 / OV7725 / OV9650 / MT9V034 的gain_db/gain_db_ceiling對應、sharpen()中過度的增益、形態學的邊緣雜訊、某個影像運算中的除以零,以及濾鏡核心尺寸過大時的堆疊破壞當機(現在會回傳乾淨的錯誤)。
系統:
以原子區段保護 USB VCP 緩衝區(序列埠損毀,#313)、修正 Windows 上的 USB 連線、在 SD 卡失敗時掛載內部 flash 檔案系統、
cpufreq的set_frequency()PLLP 值,以及一個 bootloader 韌體燒錄錯誤。
硬體與主機板支援¶
OpenMV Cam H7(STM32H7) — 全新主機板,配備硬體 JPEG 編碼器與 H7 ADC/DAC。
machine— 啟用 I2C4 匯流排。
破壞性 API 變更¶
v2.7.0 與 v2.8.0 之間使用者可見的 API 變更。範圍:modules/ 中的 Python C 模組與 scripts/libraries/ 中的 Python 函式庫。
兩項破壞性變更皆為 minor,且只影響使用到相關功能的指令碼。每個 commit 雜湊都連結到 GitHub 上的對應差異。
Python 位置引數順序現在變為嚴格 (minor)¶
整個 Python C 模組(image / sensor / fir / gif / lcd / mjpeg)的引數解析現在會先讀取位置引數再讀取關鍵字,並鎖定位置順序。結合繪製方法上新增的關鍵字引數(draw_line() / draw_rectangle() / draw_circle() / draw_string() / draw_cross() / draw_keypoints() 新增了 thickness / fill / scale / size),以位置方式亂序傳遞參數的程式碼 — 或在其中一個新引數之後以位置方式傳遞 color 的程式碼 — 必須改用關鍵字引數或遵循文件記載的位置順序。
image.mask_ellipse() 已移除 (minor)¶
image.mask_ellipse() 已被移除。呼叫它的指令碼必須移除該呼叫,或改用明確的 ROI/遮罩影像。
Commits: d7159fba3
移植檢查清單¶
以關鍵字(或文件記載的位置順序)傳遞引數,尤其是繪製方法上的 color(引數順序變更),並移除 image.mask_ellipse() 呼叫(mask_ellipse 移除)。其餘所有指令碼皆可不經修改正常執行。