OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
cv::GCompiled 类参考

表示一个已编译的计算(图)。只能用于为其编译的图像/数据格式和分辨率,但有一些例外。更多...

#include <opencv2/gapi/gcompiled.hpp>

cv::GCompiled 的协作图

公共成员函数

 GCompiled ()
 构造一个空对象。
 
bool canReshape () const
 检查底层后端是否支持 reshape。
 
const GMetaArgsmetas () const
 此图编译时使用的元数据向量。
 
 operator bool () const
 检查编译对象是否有效(非空)
 
void operator() (const std::vector< cv::Mat > &ins, const std::vector< cv::Mat > &outs)
 执行具有任意数量输入/输出的计算。
 
void operator() (cv::Mat in, cv::Mat &out)
 执行一元计算。
 
void operator() (cv::Mat in, cv::Scalar &out)
 执行一元计算。
 
void operator() (cv::Mat in1, cv::Mat in2, cv::Mat &out)
 执行二元计算。
 
void operator() (cv::Mat in1, cv::Mat in2, cv::Scalar &out)
 执行二元计算。
 
void operator() (GRunArgs &&ins, GRunArgsP &&outs)
 运行已编译的计算,通用版本。
 
const GMetaArgsoutMetas () const
 图输出的元数据描述向量。
 
void prepareForNewStream ()
 为新的视频流准备内部内核状态。
 
void reshape (const GMetaArgs &inMetas, const GCompileArgs &args)
 调整已编译的图以支持新的图像分辨率。
 

详细描述

表示一个已编译的计算(图)。只能用于为其编译的图像/数据格式和分辨率,但有一些例外。

此类表示图编译的结果(调用 cv::GComputation::compile())。此类的对象实际执行数据处理,图执行封装在此类的对象中。执行模型本身取决于编译期间使用的内核和后端,有关详细信息,请参见G-API 图编译参数

在一般情况下,GCompiled对象只能应用于为其编译的格式/分辨率的数据(参见G-API 元数据描述符)。但是,如果底层后端允许,则可以调整已编译的对象以处理不同分辨率的数据(图像),但格式和类型必须保持相同。

GCompiled在其语义上非常类似于std::function<> – 运行它看起来像用户代码中的函数调用。

目前,GCompiled对象不是可重入的 – 通常,对象是有状态的,因为图执行本身是一个有状态的过程,并且此状态现在维护在GCompiled自己的内存中(而不是在进程堆栈上)。

同时,从单个cv::GComputation生成的两个不同的GCompiled对象是完全独立的,可以并发使用。

另请参见
GStreamingCompiled

构造函数 & 析构函数文档

◆ GCompiled()

cv::GCompiled::GCompiled ( )

构造一个空对象。

成员函数文档

◆ canReshape()

bool cv::GCompiled::canReshape ( ) const

检查底层后端是否支持 reshape。

返回
如果支持,则为 true,否则为 false。

◆ metas()

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

此图编译时使用的元数据向量。

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

◆ operator bool()

cv::GCompiled::operator bool ( ) const
显式

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

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

◆ operator()() [1/6]

void cv::GCompiled::operator() ( const std::vector< cv::Mat > & ins,
const std::vector< cv::Mat > & outs )

执行具有任意数量输入/输出的计算。

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

参数
ins输入 cv::Mat 对象的向量,用于计算处理。
outs输出 cv::Mat 对象的向量,用于计算生成。

ins/outs 向量中的元素数量必须与用于定义源GComputation的输入/输出数量匹配。

◆ operator()() [2/6]

void cv::GCompiled::operator() ( cv::Mat in,
cv::Mat & out )

执行一元计算。

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

参数
in一元计算的输入 cv::Mat
输出3D仿射变换矩阵,尺寸为\(3 \times 4\),形式如下一元计算过程的输出 cv::Mat

◆ operator()() [3/6]

void cv::GCompiled::operator() ( cv::Mat in,
cv::Scalar & out )

执行一元计算。

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

参数
in一元计算的输入 cv::Mat
输出3D仿射变换矩阵,尺寸为\(3 \times 4\),形式如下一元计算过程的输出 cv::Scalar

◆ operator()() [4/6]

void cv::GCompiled::operator() ( cv::Mat in1,
cv::Mat in2,
cv::Mat & out )

执行二元计算。

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

参数
in1二元计算的第一个输入 cv::Mat
in2二元计算的第二个输入 cv::Mat
输出3D仿射变换矩阵,尺寸为\(3 \times 4\),形式如下二元计算过程的输出 cv::Mat

◆ operator()() [5/6]

void cv::GCompiled::operator() ( cv::Mat in1,
cv::Mat in2,
cv::Scalar & out )

执行二元计算。

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

参数
in1二元计算的第一个输入 cv::Mat
in2二元计算的第二个输入 cv::Mat
输出3D仿射变换矩阵,尺寸为\(3 \times 4\),形式如下二元计算过程的输出 cv::Scalar

◆ operator()() [6/6]

void cv::GCompiled::operator() ( GRunArgs && ins,
GRunArgsP && outs )

运行已编译的计算,通用版本。

参数
ins要处理的输入向量。
outs要生成的输出向量。

输入/输出向量必须具有与cv::GComputation协议(在其构造时)中定义的元素数量相同的元素。元素的形状也必须符合协议(例如,cv::Mat需要在声明cv::GMat作为输入的地方传递,等等)。否则会生成运行时异常。

输出向量中的对象可能保持为空(如cv::Mat) – G-API 将自动将输出对象初始化为正确的格式。

注意
不要手动构造 GRunArgs/GRunArgsP 对象,请使用cv::gin()/cvgout()包装器。

◆ outMetas()

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

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

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

◆ prepareForNewStream()

void cv::GCompiled::prepareForNewStream ( )

为新的视频流准备内部内核状态。

GCompiled对象可用于逐帧处理视频流。在这种情况下,在每个图像帧上分别调用GCompiled。从 OpenCV 4.4 开始,图中的某些内核可能具有其内部状态(请参见 OpenCV 后端的 GAPI_OCV_KERNEL_ST)。在这种情况下,如果用户开始使用此GCompiled处理另一个视频流,则需要调用此方法以使内核将其内部状态重新初始化为新的视频流。

◆ reshape()

void cv::GCompiled::reshape ( const GMetaArgs & inMetas,
const GCompileArgs & args )

调整已编译的图以支持新的图像分辨率。

如果发生错误,则抛出异常。

参数
inMetas要调整的新元数据。向量大小和元数据形状必须与计算的协议匹配。
args要使用的编译参数。

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