![]() |
OpenCV 4.13.0
開源電腦視覺 (Open Source Computer Vision)
|
OpenCV 圖形 API (G-API) 是一個新的 OpenCV 模組,旨在使常規影像處理更加快速且具備可移植性。這兩個目標是透過引入一種基於圖形 (graph-based) 的執行模型來實現的。
G-API 是 OpenCV 中的一個特殊模組——與大多數其他主要模組不同,它更像是一個框架,而非單一特定的 CV 演算法。G-API 提供了定義 CV 操作、使用這些操作構建圖形(以表達式形式),以及為特定後端實作並執行這些操作的方法。
G-API 文件分為以下章節:
G-API 背後的動機與目標。
G-API 架構及其主要內部組件的總體概述。
了解如何在 G-API 中引入新操作並為不同後端進行實作。
G-API 的底層實作細節,供有意貢獻開發者參考。
G-API 核心類別、資料型態、後端等。
G-API 核心操作 - 算術、布林與其他矩陣運算;
影像處理函數:色彩空間轉換、各類濾波器等。
影片處理功能。
繪圖與合成功能。
以下展示一個極基礎的 G-API 管線 (pipeline) 範例:
G-API 是一個獨立的 OpenCV 模組,因此必須明確包含其標頭檔。main() 的前四行建立並初始化了 OpenCV 標準的影片擷取物件,用於從連接的攝影機或指定檔案中獲取影片影格。
接下來構建 G-API 管線。實際上,這是一系列針對 cv::GMat 資料的 G-API 操作呼叫。G-API 的一個重要方面在於,此程式碼區塊僅是對動作的聲明,而非動作本身。此時不會進行任何處理,G-API 僅追蹤哪些操作構成了管線以及它們是如何連接的。G-API 資料物件(此處為 cv::GMat)用於將操作彼此連接。in 是一個空的 cv::GMat,用以標示計算的開始。
當 G-API 程式碼編寫完成後,會透過實例化 cv::GComputation 物件將其擷取到一個呼叫圖 (call graph) 中。該物件將輸入/輸出資料參照(在本例中分別為 in 和 out cv::GMat 物件)作為參數,並根據 in 和 out 之間的所有資料流重建呼叫圖。
cv::GComputation 是一個輕量級物件,因為它只擷取了哪些操作構成了計算。然而,它可以被用來執行計算——在接下來的處理迴圈中,每個被擷取的影格(一個 cv::Mat input_frame)都會被傳遞給 cv::GComputation::apply()。
cv::GComputation::apply() 是一個多型方法,接受可變數量的參數。由於此計算定義在單一輸入和單一輸出上,因此使用 cv::GComputation::apply() 的特殊多載來傳遞輸入資料並獲取輸出資料。
在內部,cv::GComputation::apply() 會針對給定的輸入參數編譯被擷取的圖,並立即在資料上執行編譯後的圖。
透過此範例可以歸納出幾個重要概念:
請參閱 教學與移植範例 以了解更多關於各種 G-API 功能與概念的資訊。