如何使用 OpenCL 版本的 SURF?

How to use OpenCL version of 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 版本的 SURF。我修改了我的代码以使用 cv::UMat。不幸的是,执行时间没有改变。 HAS_OPENCL 已设置,cv::ocl::useOpenCL() 为真。会出什么问题?

我知道我有点晚了,但是看看 surf.cppSURF_Impl::detectAndCompute#ifdef HAVE_OPENCL 开头,所以我认为如果您在启用 OpenCL 的情况下构建 OpenCV,则默认使用 OpenCL