根据openCV 3.0和openCL的变化,我似乎无法使用openCL来使用pyrMeanShiftFiltering。我知道openCV 2.4.10支持ocl :: meanShiftFiltering。下面的两个函数执行时间相同。
我怎样才能检查openCL下支持openCV 3.0中的哪些功能?有什么建议?
#include <opencv2/core/ocl.hpp> //attempting to use openCL
using namespace cv;
using namespace ocl;
void meanShiftOCL()
{
setUseOpenCL(true)
UMat in, out;
imread("./images/img.png").copyTo(in);
pyrMeanShiftFiltering(in, out, 40, 20, 3);
}
//not using openCL
void meanShift()
{
Mat in, out;
imread("./images/img.png").copyTo(in);
pyrMeanShiftFiltering(in, out, 40, 20, 3);
}
答案 0 :(得分:1)
我不确定是否有简单的方法可以使用给定的 OpenCV 二进制文件来确定它,但您可以使用其他定义自行重新编译 OpenCV (可以指定在cmake):
CV_OPENCL_RUN_VERBOSE
使用此定义 OpenCL 实现可用的每个函数将打印到控制台(stdout)以下消息:
<function name>: OpenCL implementation is running
关注您的问题 - 据我所知,目前pyrMeanShiftFiltering
没有 OpenCL 实施。