v5.1.0#

v5.1.0 是一個功能版本。影格緩衝區下方的窗格從直方圖擴展為一組即時檢視——Board Info、Memory、Statistics,以及全新的 Channels 檢視,可將指令碼發布的數值轉換為小工具、圖表、頻譜與深度圖,並將它們錄製到檔案中——影格緩衝區為多感測器相機新增了來源選擇器,IDE 學會載入包含開發板、韌體、範例、模型與存根的第三方儲存庫,影片錄製也改為 H.264。新增了對新開發板與感測器的支援,韌體工具經過對自 v5.0.0 以來每項變更的全面稽核而更加穩固,另有少數行為從 OpenMV Studio 移植過來。它以 Qt Creator 14.0.2 為基礎建置,並隨附韌體 v5.0.1。

重點摘要#

  • 窗格檢視——直方圖窗格的標題列新增了一個選擇器,可在 Histogram、Board Info(所連接相機的硬體、版本與功能)、Memory(MicroPython 堆積與每個 UMA 池的即時圖表,並追蹤峰值)、Statistics(除錯協定的封包、錯誤與各通道事件計數器)以及 Channels 檢視之間切換窗格。

  • Channels 檢視——指令碼可透過除錯協定發布具名的資料與控制項通道,IDE 會即時呈現它們:標籤、切換開關、滑桿、微調方塊、單選按鈕、文字輸入框、選擇器、按鈕與文字區塊,這些都會回寫至相機;具備平移、縮放、標記、觸發、歷史紀錄與頻譜分析器的波形圖;以及使用相機自有調色盤、三種縮放濾鏡與色調映射的深度圖。任何圖表或深度圖都可錄製為 CSV、WAV、NumPy 或 Edge Impulse JSON 與 CBOR 檔案——包括可錄製整個通道的 Record All——以便收集訓練資料。指令碼停止時,最後的數值會保留在畫面上。

  • 影格緩衝區來源選擇器——具有多個影像感測器的相機會在影格緩衝區的標題列顯示一個選擇器,用來選擇哪個感測器串流至 IDE(或關閉串流),JPG 切換鈕變成了 JPG/RAW 串流模式選擇器,且窗格標題會標明每張影格抵達時的格式。

  • 第三方儲存庫——供應商可以發布一個包含開發板、韌體(正式發行與開發通道)、範例、機器學習模型與 .pyi 存根的儲存庫;IDE 可從 URL 或安裝程式放入的資料夾安裝它、將其與自己的內容合併、保持更新,並讓你依優先權排序供應商。可從 Preferences → OpenMV → Third Party Repositories 管理。

  • 新硬體——OpenMV N6 Classic 開發板(包括其開機載入程式驅動程式、udev 規則與 ROM-DFU 復原項目)以及 FLIR Lepton 3.1R 與 UW 感測器。

  • H.264 錄製——影格緩衝區錄製器與影片轉換器現在以 H.264 編碼,而非 MPEG-4 Part 2,並固定關鍵影格間隔,使錄製檔能順暢定位,影格率也會對齊至整數。

  • 稽核修正——自 v5.0.0 以來的每一個提交都經過兩次迴歸審查,並特別留意韌體、開機載入程式與 ROMFS 路徑;所發現的缺陷已在此版本中修正(請參閱 錯誤修正)。

新功能#

  • 直方圖窗格中的 Board Info、Memory 與 Statistics 檢視,在深色與淺色佈景主題下皆採用滿版樣式,且文字可選取 (cdea506655b, 7629a588db9, e21bd94a395, b55dcc412f6, fc744920011, e7dc3bf0092, 448e21db0bd)。

  • Channels 檢視——完整的控制項種類(標籤、切換開關、滑桿、微調方塊、單選按鈕、文字輸入框、選擇器、按鈕、文字),具備頻譜分析器(Hann、Hamming、Blackman 與矩形窗、平均、峰值保持、對數頻率)、上升與下降緣觸發、標記、歷史紀錄與圖表匯出的波形圖;具備 Depth、Rainbow、Ironbow 與 Event 調色盤、最近鄰/雙線性/雙三次縮放、Script Range/Auto Range/Equalize 色調映射、暫停按鈕、滑鼠停留讀數、顯示宣告範圍與影格最小/最大/平均值的標頭,以及 Save Image 的深度圖;可錄製為 CSV、WAV、NumPy 與 Edge Impulse JSON/CBOR,並可選擇性加上 Edge Impulse 標籤、為長時間擷取分段,以及 Record All;協定偏好設定中新增了 Channel Polling 間隔 (5b4f31a6b3a, d1252a24f14, bfd7fd72f94, d1c2ab02a5f, 4808b8ffe26, dfc323b4ec7, 61c077df9a5, 8c2cd6cf1f1, 1534225fcee)。

  • 影格緩衝區來源選擇器與格式讀數——在多感測器相機上選擇串流的感測器,或選擇 Off;收到的影格格式會顯示在窗格標題中;JPG 切換鈕現在是 JPG Mode/RAW Mode 選擇器 (e76284bde9e, c2baff8d60c, afece31cb6a, 76448d7b9dd)。

  • 第三方儲存庫——由檔案驅動的韌體儲存庫會與內建開發板清單合併、透過網路更新並提供 Preferences 頁面、每個供應商各有一個開發韌體通道、由使用者控制供應商優先權、供應商範例合併至 File → Examples、供應商模型合併至 Model Zoo、自訂 .pyi 存根提供給程式碼自動完成、當供應商遮蔽內建內容時發出覆寫警告,以及針對供應商開發板的授權檢查 (21a63a74949, b5512efe949, b15afdac479, 1fe693f0b61, ae11ffeffc4, cf47a37ba65, 100bdeb530b, 252924901f7, c75a81f2a4a, 3e7f077a738, 5c5aa3e657c, e3f36adbdcb, b04da8ee888)。

  • 執行前移除註解——指令碼在傳送至相機之前會先移除註解,為註解繁多的指令碼節省相機 RAM;行數會保留,因此回溯訊息的行號仍與編輯器相符 (677546ee033)。

  • 內嵌錯誤標記——當指令碼因例外而終止時,編輯器會以紅色標記出錯的那一行,並在旁邊顯示錯誤文字;當你編輯檔案、再次執行或中斷連線時,標記會清除 (677546ee033)。

  • 拖放至 ROMFS 編輯器——從桌面拖入的檔案會經過與 Add File 相同的指令碼編譯與模型轉換,並放入拖放目標的資料夾中 (677546ee033)。

編輯器、終端機與 UI 改進#

  • 直方圖改由完整的 8 位元 RGB 計算,而非相機的 RGB565 表格,並採用共用的繪圖調色盤、alpha 混合填色與較暗的格線 (238e099373e, f126e8f34c0, cebbf0c9e2c)。

  • 隱藏的窗格檢視不做任何工作——當另一個檢視正在顯示或窗格已收合時,直方圖會略過計算與重繪,並在再次顯示時補上;零尺寸的重繪會被靜音 (c8730df8399)。

  • 範例指令碼開啟時在 import 之後有一個空行,且隨附的範例也以相同方式重新排版 (1f88f617ec5, 87c8f7d41c7)。

  • 程式碼自動完成會顯示私有名稱——內嵌的語言伺服器不再過濾以 _ 開頭的成員,相機的模組會使用這類名稱 (23ab5b38bb3)。

  • macOS——偏好設定中的協定控制群組方塊不再擁擠,項目檢視已防範 Cocoa 協助工具當機,會警告 Apple Silicon 使用者「Allow accessories to connect」安全性設定,並在未授予 Input Monitoring 時警告 RT1062 使用者(韌體更新需要它);兩項警告皆在連線後顯示 (7d7b69367bf, 69fe7ffc913, 742cb4d8c0b, 8890eb77834, 89646292e8d)。

  • 檢視器模式快速鍵——會破壞檢視器模式(以及一般 IDE)的零散快速鍵已停用,且檢視器模式不再將其清除後的快速鍵保存到完整版 IDE 的設定中 (251b422f642, 0d153671c1d)。

  • 未知的感測器會在狀態列中以晶片 id 命名,以便辨識並加入感測器表格 (df561775b54)。

韌體、開發板與工具#

  • OpenMV N6 Classic 支援:開發板項目、Windows DFU 驅動程式與安裝程式代碼、Linux udev 規則 (4ff4a1f239d, bdd6c96ef47, 25fcdc13c6a, 7730b699f60)。

  • FLIR Lepton 3.1R 與 UW 感測器支援 (12c03024f3c)。

  • IMX 開機載入程式交接——預先備妥的攔截器會在 RT1062 的開機載入程式列舉的瞬間取得它,取代了原本每次探測都重新產生程序、在負載較重的主機上可能錯過一秒鐘視窗的迴圈 (3d8b63c6859)。

  • 韌體 zip——Load Custom Firmware 可接受僅含 romfs 的套件以及不含 ROMFS 的套件,且自訂或開發韌體會為已處於開機載入程式模式的 IMX 開發板進行暫存 (b6f16f54c1a, 94d5fd5c30e)。

  • 私有暫存目錄,用於開發/自訂韌體、ROMFS 編輯器映像與影片工具的暫存檔案,因此其他程序殘留的過時檔案絕不會被誤燒錄或誤轉換 (939154501af, a288fe712e7, 5c8c717adec)。

  • H.264 影片——錄製與轉換以 H.264 編碼並固定關鍵影格間隔;接近整數的錄製影格率會對齊至該整數,因此播放器會回報 30 FPS 而非 29.97 (6ad1968341d, d62c110e155, bab488a54fe)。

  • 資源 zip 總和檢查碼——IDE 的資源更新會以隨版本一同發布的 SHA-256 進行驗證 (677546ee033)。

  • 誠實的 User-Agent,用於對 OpenMV 伺服器的請求 (c4279c0213e)。

錯誤修正#

針對自 v5.0.0 以來每項變更的兩次審查,發現並修正了以下問題 (ccea3b17d01, 71826200611):

  • 韌體與開機載入程式路徑——對已處於開機載入程式模式的開發板使用 Load Custom Firmware 載入 zip 時,燒錄的卻是正式發行版建置;Alif 復原路徑現在會拒絕自訂建置,而非燒錄正式發行版;變磚的 N6 Classic 曾以一般 N6 的開機載入程式與韌體修復;過時的第三方資源根目錄可能將變磚的內建開發板導向供應商檔案;IMX 攔截器在當機後仍可能繼續燒錄、在等待 flashloader 時忽略 Cancel,並在備妥過程中取消後讓序列埠保持開啟;N6 Classic 開機載入程式沒有 udev 規則;Windows 驅動程式安裝程式可接受的結束代碼有一處筆誤。

  • ROMFS 編輯器——在讀取 ROMFS 期間按 Cancel 會回報「Failed to unpack ROMFS!」,並為仍處於開機載入程式的相機等待十秒;在寫入期間按 Cancel 會無聲結束並可能留下不完整的 ROMFS;寫入期間的 dfu-util 錯誤被回報為成功;在後續對話框中按 Cancel 會捨棄所有編輯;Auto Reconnect 可能在開啟的編輯器底下連線;已連線時執行 Edit ROMFS 會先不必要地中斷並重新連線;轉換器的暫存目錄會外洩。取消操作後,現在會要求開機載入程式離開 DFU,讓相機自行恢復。

  • 第三方儲存庫——zip 項目會在解壓縮前先驗證(不允許路徑穿越或符號連結),部分安裝與重新安裝會保留舊副本直到新副本就位,被拒絕的供應商開發板不再連帶拖垮與其重疊的內建開發板,缺少的 PID 遮罩在執行階段不再符合任何項目,且基礎範例/模型索引列不再擷取同名的供應商檔案。

  • 影格緩衝區與感測器——GENX320 事件感測器(晶片 id 大於 0x80000000)會停用影格緩衝區;儲存的感測器選擇在重新啟動後未能保留;舊的「disable frame buffer」偏好設定未被移轉;串流來源指令現在依協定版本把關;直方圖頁面隱藏時對焦指標會凍結;中斷連線後影格格式仍殘留在標題中。

  • 連線流程——macOS 警告可能吞掉韌體升級提示的「Yes」;Model Zoo 總是以收合狀態開啟且未還原選取項目;當相機已插入超過十秒時,相機磁碟機的單一磁碟機後備方案無法觸及。

  • Channels 檢視與錄製器——惡意的影格大小可能使大小檢查溢位;Edge Impulse 錄製器在每個區塊都會重新配置記憶體,現在每個分段上限為 64 MB;名稱中含有分隔符號的結構描述可能索引超出記錄清單;重複的記錄會使執行中的錄製器成為孤兒;檢視凍結期間的寫入會被捨棄;通道清單現在會在取消註冊與軟重新開機事件時重新整理。

  • 影片——使用者輸入的奇數寬度會使 libx264 建置上的 H.264 編碼失敗;已取消或失敗的 .bin 轉換會留下影格,並被下一次執行一併納入。

  • 協定——協定偵測之前執行的讀取清空現在有上限(issue #336)(77cd13af76f);相機與磁碟機的關聯不再輸給其他磁碟區的競爭 (9877480c304)。

  • 序列埠資訊包裝程式中的 -Wdeprecated-copy 警告 (abcfaa8af5e)。

在地化#

平台與工具支援#

  • Qt Creator 基礎版本: 14.0.2。

  • OpenMV IDE 版本提升至 5.1.0。

  • 隨附韌體: v5.0.1(請參閱 韌體變更記錄)。

  • 新開發板與感測器: OpenMV N6 Classic;FLIR Lepton 3.1R 與 UW。

破壞性變更#

對現有專案而言無。影格緩衝區標題列中的 JPG 切換鈕現在是 JPG Mode/RAW Mode 選擇器,而其舊有的「disable frame buffer」設定會移轉至新來源選擇器的 Off 項目。指令碼在執行前會移除註解;在執行階段依賴讀取自身原始碼文字的指令碼不應如此。