我用下面的代碼功能檢測:如何使用OpenCL版本的SURF?
auto detector = cv::xfeatures2d::SURF::create();
std::vector<cv::KeyPoint> keypoints;
for (const cv::Mat& image : images) {
detector->detect(image, keypoints);
process(keypoints);
}
現在我嘗試使用衝浪的OpenCL版本。我修改了我的代碼以使用cv::UMat
。不幸的是,執行時間不會改變。 HAS_OPENCL
已設置,cv::ocl::useOpenCL()
爲true。有什麼可能出錯?
做你可以找到http://docs.opencv.org/2.4/modules/nonfree/doc/feature_detection.html#ocl-surf-ocl和http://code.opencv.org/attachments/1560/surf.ocl.cpp? ? – Micka
@Micka不幸的是,這與OpenCL 2.4相關,而不是3.0。 SURF_OCL甚至不存在。 – Anton3
你是否嘗試調用'cv :: ocl :: setUseOpenCL(true);'顯式地?但http://answers.opencv.org/question/63452/opencv-30-the-performance-of-umat/表示可能有很多函數沒有被轉換爲新的API,所以可能很多非自由的功能屬於他們。 – Micka