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 不表示流的结束。

此类的文档生成自以下文件