13.3.1.1. openmv CLI¶
安裝此套件會新增一個 openmv 可執行檔,它會開啟一個透過 USB 連接到相機的 pygame 檢視器。若在序列埠之後不帶任何引數,它會執行一個內建的小型測試指令碼,將產生的影格緩衝區串流回主機,並以縮放後的畫面顯示,同時標註當前的影格率:
openmv --port /dev/ttyACM0
埠路徑取決於主機平台。在 Linux 上,USB CDC 為 /dev/ttyACMx,USB 轉 UART 橋接器則為 /dev/ttyUSBx。在 macOS 上為 /dev/tty.usbmodem... 或 /dev/cu.usbmodem...。在 Windows 上則為 COMx。
檢視器是確認套件已安裝、相機可連線且通訊協定正常運作最快速的方式。它在指令碼開發過程中也是一個實用的示範框架——只要用 --script 將內建測試指令碼換成任何 MicroPython 檔案,就能在不離開終端機的情況下觀看結果。
在終端機中按 Esc、Ctrl+C,或關閉檢視器視窗,都能乾淨地結束程式。
13.3.1.1.1. 執行自訂指令碼¶
--script 讓 CLI 指向磁碟上的某個 MicroPython 原始檔。該檔案會上傳到相機,取代內建測試指令碼執行,而它產生的任何影格都會串流回檢視器:
openmv --port /dev/ttyACM0 --script my_script.py
指令碼輸出到 stdout 的任何內容,都會即時鏡像到主機終端機。傳入 --quiet 可抑制此輸出,或傳入 --debug 進行詳盡的通訊協定記錄。
13.3.1.1.2. 預覽自訂頻道¶
--channel NAME 會輪詢由執行中相機端指令碼註冊的自訂資料頻道,並將每次更新的前十個位元組列印到終端機:
openmv --port /dev/ttyACM0 --channel ticks
在未提供 --script 時執行的內建測試指令碼會註冊一個 ticks 頻道,回傳相機的毫秒運作時間,因此 --channel ticks 示範了 自訂頻道 詳細介紹的雙向頻道介面——而且無需你在主機或相機上自行撰寫任何程式碼。
13.3.1.1.3. 基準測試模式¶
--bench 會將標準測試指令碼換成 JPEG 壓縮吞吐量基準測試:
openmv --port /dev/ttyACM0 --bench
相機擷取一個 RGB565 QVGA 影格,將其壓縮為 JPEG,然後在一個緊密迴圈中反覆輸出同一個壓縮緩衝區。檢視器回報的是原始 USB 資料傳輸率,而非即時解碼的影格,因此螢幕上的數字是該連線對該主機所能維持的上限。這在比較不同相機或主機時很有用,可避免改變實際擷取內容所帶來的變異性。
13.3.1.1.4. 效能分析¶
CLI 可在串流影格上疊加即時的效能分析器資料。此疊加層僅在相機執行的是已註冊 profile 頻道的 PROFILE_ENABLE=1 韌體版本時才有用;在原廠韌體上,效能分析控制項沒有任何效果。
--firmware PATH——載入相機正在執行的韌體 ELF,讓疊加層能將效能分析記錄中的函式位址解析為人類可讀的名稱。若不提供,疊加層只會顯示原始位址。
檢視器中的三個鍵盤快捷鍵可控制效能分析器:
按鍵 |
動作 |
|---|---|
|
循環切換效能分析器疊加層:關閉、效能、事件。 |
|
在 inclusive(含子函式)與 exclusive(不含子函式)之間切換效能分析器模式。含子函式計時會將被呼叫函式的時間計入呼叫者;不含子函式計時則不會。 |
|
重設效能分析器計數器。 |
13.3.1.1.5. 通訊協定調校旗標¶
下列旗標對應 openmv.Camera 上的建構子參數。預設值適用於每一台出貨的相機;僅在除錯自訂韌體版本或模擬不良連線條件時才需要覆寫它們。
--baudrate N——預設為921600(將 USB 切換為 OpenMV 通訊協定的特殊值)。僅在 UART 連線時才覆寫。--timeout SEC——每次操作的逾時時間(秒)(預設1.0)。--max-retry N——宣告連線中斷前的重試次數(預設3)。--max-payload N——最大酬載大小(位元組)(預設4096)。若相機無法處理這麼大的酬載,會協商降低數值。--crc BOOL——對每個封包啟用 CRC 驗證(預設true)。--seq BOOL——啟用序號驗證(預設true)。--ack BOOL——啟用逐封包確認(預設true)。--events BOOL——啟用來自相機的事件通知(預設true)。--drop-rate FLOAT——封包丟棄模擬率,範圍為[0.0, 1.0](預設0.0)。僅供測試使用。
一個 CLI 專屬的調校選項:
--poll MS——檢視器主迴圈的輪詢速率,單位為毫秒(預設4)。
13.3.1.1.6. 其他旗標¶
有兩個旗標可在不改變相機端行為的情況下,調整檢視器呈現串流的方式:
--scale N——顯示縮放倍數(預設4)。當 QVGA 影格在 4K 顯示器上太小而難以辨識時很有用。--raw——要求相機傳送未壓縮的像素緩衝區,而非 JPEG 壓縮的內容。在沒有硬體 JPEG 支援的相機上很有用;串流影格 說明了其中的取捨。
13.3.1.1.7. 檢視器在做什麼¶
CLI 本身就是一個 openmv.Camera 程式。它會連線,呼叫 stop() 清除任何執行中的指令碼,用 exec() 上傳指令碼,用 streaming() 啟用串流,接著迴圈呼叫 read_frame()(更新顯示)、read_stdout()(鏡像指令碼的輸出)以及 read_status()(監看其他每一個已註冊頻道的活動)。原始碼位於 cli.py,是一個完整端到端驅動相機之應用程式的可運作參考範例。