v2.5.0

v2.5.0 是一個功能豐富的影像處理版本:它新增了 find_rects()find_circles()get_regression()(直線/迴歸擬合)、find_number()(LeNet 數字)、ImageWriter / ImageReader 串流類別、sensor.flush() / width() / height(),以及 pyb.RTC 支援。影像載入現在以 framebuffer 為基礎 — 請閱讀下方的破壞性變更。

重點摘要

  • image.find_rects() — 矩形/四邊形偵測器,帶有角點輸出。

  • image.find_circles() — Hough 圓形偵測。

  • image.get_regression() — 最小平方法與穩健(Theil-Sen)直線擬合。

  • image.find_number() — LeNet 數字辨識。

  • ImageWriter / ImageReader — 錄製與播放影像串流。

  • pyb.RTC 支援,以及 sensor.flush() / sensor.width() / sensor.height()

  • 破壞性變更: 影像載入現在以 framebuffer 為基礎,若影像過大則會引發例外 — 請參閱破壞性變更。

新功能

  • 特徵偵測 — 新增 image.find_rects()(AprilTag 四邊形偵測器;rect 物件帶有 x / y / w / h / corners / magnitude)、image.find_circles()(Hough)、image.get_regression()(最小平方法 + Theil-Sen 穩健直線擬合)以及 image.find_number()(LeNet 數字辨識),每項皆附帶範例指令碼。

  • 結果角點 — 為 QR-code / AprilTag / data-matrix / 條碼結果物件新增了 corners 屬性。

  • 影像串流 — 新增了 image.ImageWriter / image.ImageReader 類別(16 位元組對齊的區塊格式),並附帶 image_writer.py / image_reader.py 範例。

  • 感測器 — 新增 sensor.flush()(不進行快照即將 framebuffer 推送至 IDE)以及 sensor.width() / sensor.height()

  • pyb.RTC — 啟用 RTC 支援,並附帶 rtc.py 範例。

  • 新增了一個貓臉 Haar 級聯與一個 Servo-Shield(PCA9685)範例;openmv-cascade.py 主機端工具新增了對新版 OpenCV XML 級聯格式的支援。

其他變更與改進

  • framebuffer 經過重構,使 copy_to_fb 影像方法會更新 IDE 預覽;HaarCascade() 路徑不再需要前置 /(內建與檔案會自動偵測);GIF/MJPEG 錄製現在支援 VGA(以及 BAYER GIF);更新了內建的 README.txt,且全新檔案系統上不再建立 openmv.inf 驅動程式檔案。

錯誤修正

影像處理:

  • 修正了 find_circles() 的投票累加、get_regression() 在使用 ROI 時的 rho 偏移與記憶體洩漏、find_lines() 的線段合併、find_blobs() 的角度平均與預設(限制最少)色彩邊界、ORB 關鍵點排序穩定性/描述子排序與 matched 旗標,以及 Haar 級聯的緩衝載入(非對齊讀取)。

系統:

  • 啟用了 pyb Servo 3(P9)(#256)、修正了 RTC 初始化、增加了 UART 字元逾時(#240),並修正了未初始化的感測器 framebuffer 「enabled」旗標。

硬體與開發板支援

  • pyb.RTC 支援與 pyb Servo 3(P9);Servo-Shield(PCA9685)範例。

破壞性 API 變更

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

此破壞性變更是一項 behavior(行為)變更(API 相同,結果不同)— 請重新檢查受影響的指令碼。每個 commit hash 都連結至其在 GitHub 上的 diff。

影像載入以 framebuffer 為基礎 (behavior)

image.Image / 影像載入現在會將載入的影像複製到主 framebuffer 中,若影像太大而無法容納則會引發例外。先前可成功載入至堆積緩衝區的載入操作現在可能會失敗 — 請確保載入的影像能容納於 framebuffer 中(或處理新的錯誤)。

Commits: 87d53385a

遷移檢查清單

在您先前依賴堆積緩衝區進行影像載入的地方,請確保載入的影像能容納於 framebuffer 中(或捕捉新的「影像太大」錯誤)(影像載入變更)。其餘所有指令碼皆可不經修改直接執行。