OpenCV  4.10.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 图使用不同的输入 metas 生成的 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) -> None

使用给定的参数构造并指定单输入计算管道的输入视频流。

如果管道正在运行,则抛出异常。使用 stop() 然后 setSource() 以在新视频流上运行图。

这是一个重载成员函数,为了方便起见提供。它仅在它接受的参数方面不同于上面的函数。

参数
args用于构造和初始化流源的参数。

◆ setSource() [2/3]

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

指定单输入计算管道的输入视频流。

如果管道正在运行,则抛出异常。使用 stop() 然后 setSource() 以在新视频流上运行图。

这是一个重载成员函数,为了方便起见提供。它仅在它接受的参数方面不同于上面的函数。

参数
s表示输入视频流的 IStreamSource 的共享指针。

◆ setSource() [3/3]

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

指定输入数据到 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() -> None

启动管道执行。

使用 pull()/try_pull() 获取数据。如果未指定视频源,则抛出异常。

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

注意
此方法目前不是线程安全的(相对于用户端)。如果在应用程序中的多个线程中对同一个对象调用 start()/stop()/setSource(),请保护访问。

◆ stop()

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

停止(中止)处理管道。

注意 - 这不是暂停,而是完全停止。调用 start() 将导致 G-API 从一开始开始处理流。

如果管道未运行,则抛出异常。

◆ try_pull()

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

尝试从管道中获取下一个处理后的帧。

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

此方法将新数据写入通过输出向量传递的对象。如果还没有准备好数据,则输出向量保持不变,并返回 false。

返回值
如果已获得数据,则为 true,如果未获得,则为 false。注意:这里 false 并不表示流结束。

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