OpenCV  4.1.1-pre
Open Source Computer Vision
Looking for a C++ dev who knows OpenCV?
I'm looking for work. Hire me!
cv::gapi::GKernelPackage Class Reference

A container class for heterogeneous kernel implementation collections and graph transformations. More...

#include <opencv2/gapi/gkernel.hpp>

Public Member Functions

std::vector< GBackendbackends () const
 Lists all backends which are included into package. More...
 
const std::vector< GTransform > & get_transformations () const
 Returns vector of transformations included in the package. More...
 
template<typename KImpl >
void include ()
 Put a new kernel implementation or a new transformation KImpl into the package. More...
 
template<typename KImpl >
bool includes () const
 Test if a particular kernel implementation KImpl is included in this kernel package. More...
 
template<typename KAPI >
bool includesAPI () const
 Check if package contains ANY implementation of a kernel API by API type. More...
 
template<typename KAPI >
GBackend lookup () const
 Find a kernel (by its API) More...
 
void remove (const GBackend &backend)
 Remove all kernels associated with the given backend from the package. More...
 
template<typename KAPI >
void remove ()
 Remove all kernels implementing the given API from the package. More...
 
std::size_t size () const
 Returns total number of kernels in the package (across all backends included) More...
 

Friends

GKernelPackage combine (const GKernelPackage &lhs, const GKernelPackage &rhs)
 Create a new package based on lhs and rhs. More...
 

Detailed Description

A container class for heterogeneous kernel implementation collections and graph transformations.

GKernelPackage is a special container class which stores kernel implementations and graph transformations. Objects of this class are created and passed to cv::GComputation::compile() to specify which kernels to use and which transformations to apply in the compiled graph. GKernelPackage may contain kernels of different backends, e.g. be heterogeneous.

The most easy way to create a kernel package is to use function cv::gapi::kernels(). This template functions takes kernel implementations in form of type list (variadic template) and generates a kernel package atop of that.

Kernel packages can be also generated programatically, starting with an empty package (created with the default constructor) and then by populating it with kernels via call to GKernelPackage::include(). Note this method is also a template one since G-API kernel and transformation implementations are types, not objects.

Finally, two kernel packages can be combined into a new one with function cv::gapi::combine().

Member Function Documentation

◆ backends()

std::vector<GBackend> cv::gapi::GKernelPackage::backends ( ) const

Lists all backends which are included into package.

Returns
vector of backends

◆ get_transformations()

const std::vector<GTransform>& cv::gapi::GKernelPackage::get_transformations ( ) const

Returns vector of transformations included in the package.

Returns
vector of transformations included in the package

◆ include()

template<typename KImpl >
void cv::gapi::GKernelPackage::include ( )
inline

Put a new kernel implementation or a new transformation KImpl into the package.

References cv::gapi::combine().

Referenced by cv::gapi::imgproc::ocl::kernels().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ includes()

template<typename KImpl >
bool cv::gapi::GKernelPackage::includes ( ) const
inline

Test if a particular kernel implementation KImpl is included in this kernel package.

See also
includesAPI()
Note
cannot be applied to transformations
Returns
true if there is such kernel, false otherwise.

References cv::gapi::cpu::backend().

Here is the call graph for this function:

◆ includesAPI()

template<typename KAPI >
bool cv::gapi::GKernelPackage::includesAPI ( ) const
inline

Check if package contains ANY implementation of a kernel API by API type.

◆ lookup()

template<typename KAPI >
GBackend cv::gapi::GKernelPackage::lookup ( ) const
inline

Find a kernel (by its API)

Returns implementation corresponding id. Throws if nothing found.

Returns
Backend which hosts matching kernel implementation.

◆ remove() [1/2]

void cv::gapi::GKernelPackage::remove ( const GBackend backend)

Remove all kernels associated with the given backend from the package.

Does nothing if there's no kernels of this backend in the package.

Parameters
backendbackend which kernels to remove

◆ remove() [2/2]

template<typename KAPI >
void cv::gapi::GKernelPackage::remove ( )
inline

Remove all kernels implementing the given API from the package.

Does nothing if there's no kernels implementing the given interface.

◆ size()

std::size_t cv::gapi::GKernelPackage::size ( ) const

Returns total number of kernels in the package (across all backends included)

Returns
a number of kernels in the package

Friends And Related Function Documentation

◆ combine

GKernelPackage combine ( const GKernelPackage lhs,
const GKernelPackage rhs 
)
friend

Create a new package based on lhs and rhs.

Parameters
lhs"Left-hand-side" package in the process
rhs"Right-hand-side" package in the process
Returns
a new kernel package.

The documentation for this class was generated from the following file: