OpenCV 4.11.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 对象>

成员函数文档

◆ metas()

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

此图编译的元数据向量。

返回值
除非不支持*reshape*,否则返回值与传递给 cv::GComputation::compile() 以生成此编译对象的向量相同。否则,它是传递给 reshape() 的最新元数据向量(如果该调用成功)。

◆ operator bool()

cv::GStreamingCompiled::operator bool ( ) const
explicit

检查编译后的对象是否有效(非空)

返回值
如果对象可运行(有效),则为 true,否则为 false

◆ outMetas()

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

图输出的元数据描述向量。

返回值
图输出对象的格式/分辨率向量,由构成此计算的操作从输入元数据向量自动推断。
注意
使用不同的输入元数据从相同的 cv::GComputiation 图生成的 GCompiled 对象在此向量中可能返回不同的值。

◆ pull() [1/2]

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

从管道获取一些下一个可用数据。

此方法采用 cv::optional 对象向量。如果在调用时此值可用(已准备就绪),则将对象赋值给某个值,如果不可用,则将对象重置为空()。

这是一个阻塞方法,保证在返回时已将一些数据写入输出向量。

仅当图具有不同步的部分时(参见 cv::gapi::desync),使用此方法才有意义。如果图中没有不同步的部分,则此方法的行为与常规 pull() 相同(所有数据对象都在输出向量中同步生成)。

使用 gout() 创建输出参数向量。

输出向量必须与cv::GComputation 协议中定义的元素数量相同(在其构造时)。元素的形状也必须符合协议(例如,在cv::optional<cv::Mat> 声明为输出的地方需要传入cv::GMat,依此类推)。类型不匹配将引发运行时异常。

此方法将新数据写入通过输出向量传递的对象。如果尚未准备好数据,此方法将阻塞。如果您需要非阻塞版本,请使用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::Mat 声明为输出的地方需要传入cv::GMat,依此类推)。类型不匹配将引发运行时异常。

此方法将新数据写入通过输出向量传递的对象。如果尚未准备好数据,此方法将阻塞。如果您需要非阻塞版本,请使用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::Mat 声明为输入的地方需要传入cv::GMat,依此类推)。类型不匹配将引发运行时异常。

与普通的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() 获取数据。如果未指定视频源,则抛出异常。

即使管道已经运行然后停止(通过stop() 显式停止或由于流完成),也必须首先调用setSource()

注意
目前此方法不是线程安全的(关于用户端)。如果您的应用程序中可能在多个线程上调用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 不表示流的结束。

此类的文档是从以下文件生成的