OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
cv::GStreamingCompiled 類參考

表示為流式處理編譯的計算(圖)。更多...

#include <opencv2/gapi/gstreaming.hpp>

cv::GStreamingCompiled 協作圖

公共成員函式

GAPI_WRAP GStreamingCompiled ()
 
const GMetaArgsmetas () const
 此圖編譯時使用的元資料向量。
 
 operator bool () const
 檢查編譯物件是否有效(非空)
 
const GMetaArgsoutMetas () const
 圖輸出的元資料描述向量。
 
bool pull (cv::GOptRunArgsP &&outs)
 從管道獲取下一個可用資料。
 
bool pull (cv::GRunArgsP &&outs)
 從管道獲取下一個處理過的幀。
 
GAPI_WRAP bool running () const
 測試管道是否正在執行。
 
template<typename T , typename... Args>
void setSource (Args &&... args)
 使用給定引數為單輸入計算管道構建並指定輸入影片流。
 
void setSource (const gapi::wip::IStreamSource::Ptr &s)
 為單輸入計算管道指定輸入影片流。
 
void setSource (GRunArgs &&ins)
 指定要由GStreamingCompiled 處理的輸入資料,這是一個通用版本。
 
GAPI_WRAP void start ()
 啟動管道執行。
 
GAPI_WRAP void stop ()
 停止(中止)管道處理。
 
bool try_pull (cv::GRunArgsP &&outs)
 嘗試從管道獲取下一個處理過的幀。
 

詳細描述

表示為流式處理編譯的計算(圖)。

此類表示圖編譯的產物(呼叫 cv::GComputation::compileStreaming())。此類的物件實際執行流處理,整個管道執行的複雜性都封裝在此類的物件中。執行模型分為兩層:最頂層,異構圖的執行被積極地流水線化;最底層,每個內部塊的執行由其關聯的後端決定。後端根據透過編譯引數傳遞的核心包選擇(詳見 G-API 圖編譯引數、GNetworkPackage、GKernelPackage)。

GStreamingCompiled 物件具有“播放器”語義 – 例如 start()stop() 等方法。 GStreamingCompiled 完全控制影片流,因此是有狀態的。您需要使用 setSource() 指定輸入流資料,然後呼叫 start() 來實際開始處理。之後,分別使用 pull() 或 try_pull() 以阻塞或非阻塞方式從圖中獲取下一個處理過的資料幀。

目前,單個 GStreamingCompiled 只能同時處理一個影片流。要對多個影片流執行相同的圖,請生成多個 GStreamingCompiled 物件。

另請參見
GCompiled

建構函式 & 解構函式文件

◆ GStreamingCompiled()

GAPI_WRAP cv::GStreamingCompiled::GStreamingCompiled ( )
Python
cv.GStreamingCompiled() -> <GStreamingCompiled object>

成員函式文件

◆ metas()

const GMetaArgs & cv::GStreamingCompiled::metas ( ) const

此圖編譯時使用的元資料向量。

返回
除非不支援 reshape,否則返回值與傳遞給 cv::GComputation::compile() 以生成此編譯物件的向量相同。否則,它是傳遞給 reshape() 的最新元資料向量(如果該呼叫成功)。

◆ operator bool()

cv::GStreamingCompiled::operator bool ( ) const
顯式

檢查編譯物件是否有效(非空)

返回
如果物件是可執行的(有效的),則為 true,否則為 false

◆ outMetas()

const GMetaArgs & cv::GStreamingCompiled::outMetas ( ) const

圖輸出的元資料描述向量。

返回
包含圖輸出物件格式/解析度的向量,由構成此計算的操作從輸入元資料向量自動推斷。
注意
由具有不同輸入元資料的相同 cv::GComputation 圖生成的 GCompiled 物件可能在此向量中返回不同的值。

◆ pull() [1/2]

bool cv::GStreamingCompiled::pull ( cv::GOptRunArgsP && outs)
Python
cv.GStreamingCompiled.pull() -> retval

從管道獲取下一個可用資料。

此方法接受一個 cv::optional 物件的向量。如果在呼叫時此值可用(準備好),則將物件分配給某個值;如果不可用,則將物件重置為 empty()。

這是一個阻塞方法,保證在返回時已將一些資料寫入輸出向量。

僅當圖具有非同步部分(請參閱 cv::gapi::desync)時,使用此方法才有意義。如果圖中沒有非同步部分,則此方法的行為與常規 pull() 相同(所有資料物件都在輸出向量中同步生成)。

使用 gout() 建立輸出引數向量。

輸出向量必須具有與 cv::GComputation 協議中定義的元素數量相同(在其構造時)。元素的形狀也必須符合協議(例如,在 cv::GMat 宣告為輸出的地方需要傳遞 cv::optional<cv::Mat>,等等)。型別不匹配時會生成執行時異常。

此方法將新資料寫入透過輸出向量傳遞的物件中。如果沒有資料準備好,此方法將阻塞。如果需要非阻塞版本,請使用 try_pull()

引數
outs要獲取的輸出引數向量。
返回
如果已獲取下一個結果則為 true,false 表示流結束。
另請參見
cv::gapi::desync

◆ pull() [2/2]

bool cv::GStreamingCompiled::pull ( cv::GRunArgsP && outs)
Python
cv.GStreamingCompiled.pull() -> retval

從管道獲取下一個處理過的幀。

使用 gout() 建立輸出引數向量。

輸出向量必須具有與 cv::GComputation 協議中定義的元素數量相同(在其構造時)。元素的形狀也必須符合協議(例如,在 cv::GMat 宣告為輸出的地方需要傳遞 cv::Mat,等等)。型別不匹配時會生成執行時異常。

此方法將新資料寫入透過輸出向量傳遞的物件中。如果沒有資料準備好,此方法將阻塞。如果需要非阻塞版本,請使用 try_pull()

引數
outs要獲取的輸出引數向量。
返回
如果已獲取下一個結果則為 true,false 表示流結束。

◆ running()

GAPI_WRAP bool cv::GStreamingCompiled::running ( ) const
Python
cv.GStreamingCompiled.running() -> retval

測試管道是否正在執行。

注意
目前,此方法不是執行緒安全的(對於使用者側)。如果您的應用程式中可能在多個執行緒中對同一物件呼叫 start()/stop()/setSource(),請保護訪問。
返回
如果當前流尚未結束則為 true。

◆ setSource() [1/3]

template<typename T , typename... Args>
void cv::GStreamingCompiled::setSource ( Args &&... args)
inline
Python
cv.GStreamingCompiled.setSource(callback) ->

使用給定引數為單輸入計算管道構建並指定輸入影片流。

如果管道已在執行,則丟擲異常。使用 stop() 然後使用 setSource() 在新的影片流上執行圖。

這是一個過載的成員函式,為方便起見而提供。它與上述函式的區別僅在於它接受的引數。

引數
args用於構造和初始化流源的引數。
此函式的呼叫圖如下

◆ setSource() [2/3]

void cv::GStreamingCompiled::setSource ( const gapi::wip::IStreamSource::Ptr & s)
Python
cv.GStreamingCompiled.setSource(callback) ->

為單輸入計算管道指定輸入影片流。

如果管道已在執行,則丟擲異常。使用 stop() 然後使用 setSource() 在新的影片流上執行圖。

這是一個過載的成員函式,為方便起見而提供。它與上述函式的區別僅在於它接受的引數。

引數
s指向表示輸入影片流的 IStreamSource 的共享指標。

◆ setSource() [3/3]

void cv::GStreamingCompiled::setSource ( GRunArgs && ins)
Python
cv.GStreamingCompiled.setSource(callback) ->

指定要由GStreamingCompiled 處理的輸入資料,這是一個通用版本。

使用 gin() 建立輸入引數向量。

輸入向量必須具有與 cv::GComputation 協議中定義的元素數量相同(在其構造時)。元素的形狀也必須符合協議(例如,在 cv::GMat 宣告為輸入的地方需要傳遞 cv::Mat,等等)。型別不匹配時會生成執行時異常。

與常規 GCompiled 不同,使用者還可以為父 GComputationGMat 引數傳遞 GVideoCapture 型別的物件。編譯後的管道將開始從該 GVideoCapture 獲取資料並將其饋送到管道中。當 GVideoCapture 標記流結束時(或呼叫 stop() 時),管道停止。

GMat 引數傳遞常規 Mat 會使其成為“無限”源——管道可能會永遠執行,使用此 Mat 饋送,直到明確停止。

目前僅支援單個 GVideoCapture 作為輸入。如果父 GComputation 聲明瞭多個輸入 GMat,則其中一個可以指定為 GVideoCapture,但所有其他都必須是常規 Mat 物件。

如果管道已在執行,則丟擲異常。使用 stop() 然後使用 setSource() 在新的影片流上執行圖。

注意
目前,此方法不是執行緒安全的(對於使用者側)。如果您的應用程式中可能在多個執行緒中對同一物件呼叫 start()/stop()/setSource(),請保護訪問。
引數
ins要處理的輸入向量。
另請參見
gin

◆ start()

GAPI_WRAP void cv::GStreamingCompiled::start ( )
Python
cv.GStreamingCompiled.start() ->

啟動管道執行。

使用 pull()/try_pull() 獲取資料。如果未指定影片源,則丟擲異常。

必須首先呼叫 setSource(),即使管道已經執行並隨後停止(透過 stop() 明確停止或因流完成而停止)。

注意
目前,此方法不是執行緒安全的(對於使用者側)。如果您的應用程式中可能在多個執行緒中對同一物件呼叫 start()/stop()/setSource(),請保護訪問。

◆ stop()

GAPI_WRAP void cv::GStreamingCompiled::stop ( )
Python
cv.GStreamingCompiled.stop() ->

停止(中止)管道處理。

注意 - 這不是暫停而是完全停止。呼叫 start() 將導致 G-API 從頭開始處理流。

如果管道未執行,則丟擲異常。

◆ try_pull()

bool cv::GStreamingCompiled::try_pull ( cv::GRunArgsP && outs)

嘗試從管道獲取下一個處理過的幀。

使用 gout() 建立輸出引數向量。

此方法將新資料寫入透過輸出向量傳遞的物件中。如果沒有資料準備好,輸出向量保持不變並返回 false。

返回
如果已獲取資料則為 true,否則為 false。注意:這裡的 false 不表示流的結束。

此類的文件生成自以下檔案