v1.0.0-beta¶
v1.0.0-beta 是 OpenMV 韌體的初始(beta)版本 — OpenMV Cam 的第一個公開建置版本。它奠定了此後一切建構於其上的基礎:在 STM32F4 OpenMV Cam 上的 MicroPython 指令碼執行環境、一個相機 sensor API、一個 image 機器視覺函式庫,以及用於即時開發的 OpenMV IDE。由於這是第一個版本,沒有需要遷移的舊版本 — 本條目摘要說明初始韌體所附帶的內容。
重點摘要¶
OpenMV Cam 上的 MicroPython — 透過 USB 在相機上執行 Python 指令碼,並具備互動式 REPL 與 IDE 除錯介面。
相機擷取 —
sensor模組:設定像素格式/解析度/影格速率,並使用snapshot()擷取影格。機器視覺 —
image函式庫:色彩色塊偵測、繪製、濾鏡、樣板匹配、Haar 級聯臉部偵測,以及關鍵點。OpenMV IDE — 一個桌面 IDE,具備即時影格緩衝區檢視器、程式碼編輯器,以及 IDE 內韌體更新功能。
硬體 — 搭載 OmniVision OV9650/OV2640 相機的原始 OpenMV Cam(STM32F4),支援 SD 卡與 WiFi 擴充板。
新功能¶
指令碼與模組:
以 MicroPython 執行環境作為韌體基礎,可透過 USB 除錯介面在相機上執行指令碼,並具備互動式 REPL。
一個
sensor模組 —set_pixformat()/set_framesize()/set_framerate()、增益上限/亮度/對比/增益控制、reset()、snapshot(),以及水平鏡像/垂直翻轉 — 還有感測器與解析度常數。一個
image機器視覺模組(imlib),公開影像物件(具備 Python 緩衝區協定)以及其下的影像處理基礎。一個用於計時與 FPS 量測的
time/clock模組。早期的周邊模組 —
led(RGB LED)、spi、gpio(具備外部中斷註冊的接腳 I/O)、uart、硬體rng、systick 計時器,以及用於檔案系統的file/select。透過
socket/wlan(CC3000 WiFi)進行網路連線、一個lcd顯示器驅動程式、一個mlx90620熱感測器模組,以及 AVI/MJPEG 影片錄製。
影像處理:
相機影格擷取至動態配置的影格緩衝區中。
色彩色塊偵測(漫水填充)以及 LAB/XYZ 色彩空間閾值處理(具備 RGB↔LAB 轉換表)。
繪製基本圖形(線段、字串/字型、圓形)、濾鏡(侵蝕/膨脹/中值/反轉/二值/閾值)、影像縮放(雙線性)、子影像擷取、blit,以及 alpha 混合。
樣板匹配(具備樣板儲存/載入)、Viola-Jones Haar 級聯臉部/物件偵測(可載入的級聯+一個 OpenCV 級聯轉換器)、一個 LBP 級聯與眼睛偵測器、FAST/SURF/FREAK 關鍵點偵測與描述子匹配、積分影像,以及動作偵測。
JPEG 編碼(具備品質控制)、PPM/PGM/PNG/raw 影像儲存,以及 AVI/MJPEG 影片編碼。
IDE 與工具:
OpenMV IDE 桌面應用程式 — 具備 FPS 的即時影格緩衝區檢視器、一個程式碼編輯器(開啟/新增/儲存/另存新檔、最近的檔案、隨附的範例選單)、連線/重設/自動連線,以及設定的載入/儲存。
透過 DFU 進行 IDE 內韌體更新、一個純 Python 的
pydfu工具程式,以及一個強制進入開機載入程式的 USB 指令;openmv.py主機函式庫/協定;一個獨立的影格緩衝區檢視器與級聯工具;以及 Linux udev 規則。
其他變更與改進¶
隨附的範例指令碼:色塊偵測、臉部偵測/追蹤、SURF/關鍵點、樣板匹配、LCD、影格緩衝區檢視器、blit、MJPEG 串流器、AVI 錄製、echo 伺服器、FPS,以及 JPEG/影像寫入示範。
硬體與開發板支援¶
OpenMV Cam — 跨越早期硬體版本的 STM32F4xx(STM32F407/F429),搭配 CMSIS+STM32 周邊/Cube HAL 與 CMSIS-DSP。
相機 — 透過感測器 HAL 支援的 OmniVision OV9650 與 OV2640(SCCB/I2C、穩壓器控制),加上 MLX90620 熱感紅外線感測器;解析度從 QQCIF/QCIF 到 SVGA/UXGA,最高可達 30 FPS。
儲存/連線 — 搭配 FatFS 的 SD 卡(SPI 與 SDIO)、一個內部快閃記憶體檔案系統、SDRAM(影格緩衝區位於 SDRAM 中)、USB OTG FS(除錯+DFU)、CC3000 WiFi(WiFi/BLE 擴充板)、一個 IR LED,以及軟體/硬體 I2C 與 DMA 驅動的 SPI。
破壞性 API 變更¶
無。v1.0.0-beta 是 OpenMV 韌體的初始(beta)版本 — 沒有先前的版本會被破壞相容性。後續版本會記錄其相對於前一版本的破壞性變更;請參閱 變更紀錄的其餘部分。