OpenCL support
Overview
// enums enum cv::ocl::OclVectorStrategy; // classes class cv::ocl::Context; class cv::ocl::Device; class cv::ocl::Image2D; class cv::ocl::Kernel; class cv::ocl::KernelArg; class cv::ocl::Platform; class cv::ocl::PlatformInfo; class cv::ocl::Program; class cv::ocl::ProgramSource; class cv::ocl::Queue; // global functions void cv::ocl::attachContext( const String& platformName, void* platformID, void* context, void* deviceID ); void cv::ocl::buildOptionsAddMatrixDescription( String& buildOptions, const String& name, InputArray _m ); int cv::ocl::checkOptimalVectorWidth( const int* vectorWidths, InputArray src1, InputArray src2 = noArray(), InputArray src3 = noArray(), InputArray src4 = noArray(), InputArray src5 = noArray(), InputArray src6 = noArray(), InputArray src7 = noArray(), InputArray src8 = noArray(), InputArray src9 = noArray(), OclVectorStrategy strat = OCL_VECTOR_DEFAULT ); void cv::ocl::convertFromBuffer( void* cl_mem_buffer, size_t step, int rows, int cols, int type, UMat& dst ); void cv::ocl::convertFromImage( void* cl_mem_image, UMat& dst ); const char* cv::ocl::convertTypeStr( int sdepth, int ddepth, int cn, char* buf ); void cv::ocl::finish(); MatAllocator* cv::ocl::getOpenCLAllocator(); void cv::ocl::getPlatfomsInfo(std::vector<PlatformInfo>& platform_info); bool cv::ocl::haveAmdBlas(); bool cv::ocl::haveAmdFft(); bool cv::ocl::haveOpenCL(); bool cv::ocl::haveSVM(); void cv::ocl::initializeContextFromHandle( Context& ctx, void* platform, void* context, void* device ); String cv::ocl::kernelToStr( InputArray _kernel, int ddepth = -1, const char* name = NULL ); const char* cv::ocl::memopTypeToStr(int t); int cv::ocl::predictOptimalVectorWidth( InputArray src1, InputArray src2 = noArray(), InputArray src3 = noArray(), InputArray src4 = noArray(), InputArray src5 = noArray(), InputArray src6 = noArray(), InputArray src7 = noArray(), InputArray src8 = noArray(), InputArray src9 = noArray(), OclVectorStrategy strat = OCL_VECTOR_DEFAULT ); int cv::ocl::predictOptimalVectorWidthMax( InputArray src1, InputArray src2 = noArray(), InputArray src3 = noArray(), InputArray src4 = noArray(), InputArray src5 = noArray(), InputArray src6 = noArray(), InputArray src7 = noArray(), InputArray src8 = noArray(), InputArray src9 = noArray() ); void cv::ocl::setUseOpenCL(bool flag); const char* cv::ocl::typeToStr(int t); bool cv::ocl::useOpenCL(); const char* cv::ocl::vecopTypeToStr(int t);
Detailed Documentation
Global Functions
void cv::ocl::attachContext( const String& platformName, void* platformID, void* context, void* deviceID )
Attaches OpenCL context to OpenCV.
OpenCV will check if available OpenCL platform has platformName name, then assign context to OpenCV and call clRetainContext
function. The deviceID device will be used as target device and new command queue will be created.
Parameters:
platformName | name of OpenCL platform to attach, this string is used to check if platform is available to OpenCV at runtime |
platformID | ID of platform attached context was created for |
context | OpenCL context to be attached to OpenCV |
deviceID | ID of device, must be created from attached context |
void cv::ocl::convertFromBuffer( void* cl_mem_buffer, size_t step, int rows, int cols, int type, UMat& dst )
Convert OpenCL buffer to UMat.
OpenCL buffer (cl_mem_buffer) should contain 2D image data, compatible with OpenCV. Memory content is not copied from clBuffer
to UMat. Instead, buffer handle assigned to UMat and clRetainMemObject
is called.
Parameters:
cl_mem_buffer | source clBuffer handle |
step | num of bytes in single row |
rows | number of rows |
cols | number of cols |
type | OpenCV type of image |
dst | destination UMat |
void cv::ocl::convertFromImage( void* cl_mem_image, UMat& dst )
Convert OpenCL image2d_t to UMat.
OpenCL image2d_t
(cl_mem_image), should be compatible with OpenCV UMat formats. Memory content is copied from image to UMat with clEnqueueCopyImageToBuffer
function.
Parameters:
cl_mem_image | source image2d_t handle |
dst | destination UMat |