v2.6.0¶
v2.6.0 將核心更新至 MicroPython 1.9.2,將 find_line_segments() 切換為 LSD 演算法,新增 MT9V034 全域快門感測器支援、image.rotation_corr() 透視校正、sensor.sleep()、原始影像儲存,以及 OpenMV 4 主機板的前置作業。find_line_segments()、數個 framesize 與 MicroPython 的行為皆有變動 — 請閱讀下方的破壞性變更。
重點摘要¶
MicroPython 1.9.2 核心更新。
LSD 線段 —
find_line_segments()現在使用線段偵測器(Line Segment Detector)演算法。MT9V034 全域快門感測器支援。
image.rotation_corr()— X/Y/Z 透視旋轉校正。sensor.sleep()軟性睡眠模式與原始(未壓縮)影像儲存。破壞性變更:
find_line_segments()的參數、數個 framesize 常數與 MicroPython 的行為皆有變動 — 詳見破壞性變更。
新功能¶
image.rotation_corr()— 新增 X/Y/Z 透視旋轉校正,並附上rotation_correction.py範例。sensor.sleep(enable)— 讓相機進入軟性睡眠模式(並附上睡眠模式範例)。原始影像 —
image.save()現在可寫出原始(未壓縮)影像。MT9V034 — 新增全域快門感測器支援,並公開
sensor.MT9V034常數。新增供
image.lens_corr()使用的lens_correction.py範例,以及 OpenMV 4 主機板支援檔(主機板設定/bootloader/linker 前置作業)。
其他變更與改進¶
將內建的 MicroPython 更新至 1.9.2(1.9 移植底層管路、oofatfs);為新的 LSD API 重寫了
find_line_segments.py(鏡頭校正預設關閉);更新主機端的openmvAPI(init(portname)/exec_script/stop_script);降低 OpenMV Cam M4 的感測器時脈(M4 上最高 FPS 較低);IDE 的停止按鈕現在使用硬性強制例外,以更可靠地中斷指令碼。
錯誤修正¶
修正了
image.lens_corr()殘留舊像素的問題(現在會在重新映射前清空目的緩衝區)、blob.density()使用整數除法的問題(總是回傳 0,#268)、OpenMV 2(M4)的 UART 接腳對應,並更新qrcodes_with_lens_corr.py改用 QVGA。
硬體與主機板支援¶
MT9V034 全域快門感測器。
OpenMV 4 — 主機板支援檔(前置作業)。
OpenMV 2(M4) — UART 接腳對應修正。
破壞性 API 變更¶
v2.5.0 與 v2.6.0 之間使用者可見的 API 變更。範圍:modules/ 中的 Python C 模組與 scripts/libraries/ 中的 Python 函式庫。
每項變更都標註了其影響程度:
major — 影響大多數使用該功能的指令碼;你需要移植程式碼。
minor — 範圍狹窄的 API;只影響使用到它的指令碼。
behavior — API 相同但結果不同;請重新檢查已調校過的指令碼。
變更依影響程度依此順序分組。如果你只想移植自己的程式碼,請直接跳到結尾的 移植檢查清單。每個 commit 雜湊都連結到 GitHub 上的對應差異。
find_line_segments() 切換為 LSD (major)¶
image.find_line_segments() 已重寫為使用線段偵測器(LSD)演算法。舊有的 threshold / theta_margin / rho_margin / segment_threshold / x_stride / y_stride 參數已替換為 merge_distance 與 max_theta_diff(例如 find_line_segments(merge_distance=0, max_theta_diff=15))。此外,它在 M4 等級(OpenMV 2)的主機板上不再提供。
移除無效的 framesize 常數 (minor)¶
已移除無效的 sensor.QQQQCIF / QQQCIF / QQQQSIF / QQQSIF / HQQQQVGA / HVGA framesize 常數(#261)。使用這些常數的指令碼必須改用受支援的解析度。
Commits: 35ab0a26f
OpenMV Cam M4 上移除 find_qrcodes() (minor)¶
image.find_qrcodes() 在 M4 等級(OpenMV 2)的主機板上不再編譯。在 M4 硬體上進行 QR 偵測時,請使用 OpenMV 3(M7)主機板或其他程式功能。其他主機板不受影響。
Commits: 7dff089e6
MicroPython 更新至 1.9.2 (behavior)¶
內建的 MicroPython 核心已更新至 1.9.2。標準函式庫與語言行為依循上游的 MicroPython 1.9.2 — 請重新檢查依賴特定版本行為的指令碼。值得注意的是,步進值不為 1 的影像切片現在會引發 OSError 而非 NotImplementedError。
Commits: 11bed4b99
移植檢查清單¶
若要順利移植至 v2.6.0,通常需要進行的工作如下:
為 LSD 參數(
merge_distance/max_theta_diff)重寫find_line_segments()呼叫,並將該處理移出 M4(LSD 改寫)。將已移除的 framesize 常數替換為受支援的解析度(framesize 移除)。
將 M4 的 QR 碼偵測移至 M7 主機板(find_qrcodes 變更)。
對照 MicroPython 1.9.2 重新驗證特定版本的行為(MicroPython 升級)。
其餘所有指令碼皆可不經修改正常執行。