的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