的OpenCL的-Implemantation使用语法/函数我试着去了解OpenCV的范围内使用OpenCL的,但我不明白:在OpenCV中
这是一个例子Codepart从orb.cpp
其中名为ORB_HarrisResponses
内核位于orb.cl
创建(propably):
ocl::Kernel hr_ker("ORB_HarrisResponses", ocl::features2d::orb_oclsrc,
format("-D ORB_RESPONSES -D blockSize=%d -D scale_sq_sq=%.12ef -
D HARRIS_K=%.12ff", blockSize, scale_sq_sq, harris_k));
return hr_ker.args(ocl::KernelArg::ReadOnlyNoSize(imgbuf),
ocl::KernelArg::PtrReadOnly(layerinfo),
ocl::KernelArg::PtrReadOnly(keypoints),
ocl::KernelArg::PtrWriteOnly(responses),
nkeypoints).run(1, globalSize, 0, true);
但是,这是不是正规的OpenCL语法(如clCreateKernel功能...)。有人知道我在哪里可以对OpenCV的OpenCL实现有一个基本的了解,以回答以下问题:
- “正常”OpenCL和OpenCV OpenCL之间的连接在哪里?
- 当程序从内核源文件建立?
- 哪里是函数,它创建内核解释呢?
- 等
我couldn't找到的文档或相关问题网页。 感谢
编辑:谢谢回答它有助于了解几件事情:
ocl::Kernel hr_ker("ORB_HarrisResponses", ocl::features2d::orb_oclsrc,
format("-D ORB_RESPONSES -D blockSize=%d -D scale_sq_sq=%.12ef -D HARRIS_K=%.12ff", blockSize, scale_sq_sq, harris_k));
在这部分位于orb.cl
构建字符串ocl::features2d::orb_oclsrc
内的内核代码ORB_HarrisResponses
为hr_ker
创建(右? )。
- 但格式(...)是什么?
if hr_ker.empty()
return false;
return hr_ker.args(ocl::KernelArg::ReadOnlyNoSize(imgbuf),
ocl::KernelArg::PtrReadOnly(layerinfo),
ocl::KernelArg::PtrReadOnly(keypoints),
ocl::KernelArg::PtrWriteOnly(responses),
nkeypoints).run(1, globalSize, 0, true);
在内核参数imgbuf
,layerinfo
这一部分,keypoints
被设置和内核的输出被存储在应答。
nkeypoints发生了什么?
为什么没有这个参数的
ocl::KernelArg
?orb.cl
中的内核有7个参数,但只设置了5个,为什么?- 究竟是从退货
hr_ker.args(...)
返回什么?
感谢您回答我的问题:)。也许你可以再看看编辑的问题:) – Drian
@Drian Yep,我已经更新了答案。 – akarsakov
嗨,我有一个问题与你的答案有关,所以我希望你会再看看这里:)你说:“ocl :: KernelArg :: ReadOnlyNoSize实际上扩展为三个参数:imgbuf,imgstep,imgoffset0。”我如何从imgstep和imgoffset获取值?谢谢:) – Drian