openCV 3.0、openCL和meanShiftFiltering

openCV 3.0、openCL和meanShiftFiltering,opencv,opencl,Opencv,Opencl,基于openCV 3.0和openCL中的更改,我似乎无法使用openCL实现pyrMeanShiftFiltering。我知道openCV 2.4.10支持ocl::meanShiftFiltering。以下两个函数的执行时间相同 我如何检查openCV 3.0中的哪些函数在openCL下受支持?有什么建议吗 #include <opencv2/core/ocl.hpp> //attempting to use openCL using namespace cv; usi

基于openCV 3.0和openCL中的更改,我似乎无法使用openCL实现pyrMeanShiftFiltering。我知道openCV 2.4.10支持ocl::meanShiftFiltering。以下两个函数的执行时间相同

我如何检查openCV 3.0中的哪些函数在openCL下受支持?有什么建议吗

 #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);        
   }
#包括//尝试使用openCL
使用名称空间cv;
使用名称空间ocl;
void meanShiftOCL()
{
setUseOpenCL(真)
乌马特进来,出去;
imread(“./images/img.png”).copyTo(in);
吡咯移位过滤(输入、输出、40、20、3);
}
//不使用openCL
void meanShift()
{
垫进,垫出;
imread(“./images/img.png”).copyTo(in);
吡咯移位过滤(输入、输出、40、20、3);
}

我不确定是否有简单的方法可以通过给定的OpenCV二进制文件来确定它,但您可以使用附加的define重新编译OpenCV(可以在cmake中指定):

CV\u OPENCL\u RUN\u VERBOSE

使用此定义,OpenCL实现可用的每个函数将向控制台(stdout)打印以下消息:

:OpenCL实现正在运行


考虑到您的问题-据我所知,目前
pyramanshiftfiltering
没有OpenCL实现。

谢谢您的回复。pyrMeanShiftFiltering没有openCL实现,这真是一个遗憾。在版本2.4.10中,ocl::meanShiftFiltering可用。他们为什么把它拿走了\n在3.0文档中是否有任何方法可以判断函数是否启用了openCL?我不确定为什么会发生这种情况-可能您甚至可以添加实现并发出请求。关于文档-我没有发现任何确定OpenCL实现是否可用的可能性…正如我看到的,
pyrmanshiftfiltering
的cuda版本存在。还有OpenCL充电的
pyrUp
pyrUp