如何使用 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.cpp
,
SURF_Impl::detectAndCompute
以 #ifdef HAVE_OPENCL
开头,所以我认为如果您在启用 OpenCL 的情况下构建 OpenCV,则默认使用 OpenCL
我使用以下代码进行特征检测:
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.cpp
,
SURF_Impl::detectAndCompute
以 #ifdef HAVE_OPENCL
开头,所以我认为如果您在启用 OpenCL 的情况下构建 OpenCV,则默认使用 OpenCL