【问题标题】:openCV 3.0, openCL and meanShiftFilteringopenCV 3.0、openCL 和 meanShiftFiltering
【发布时间】:2015-12-10 13:51:53
【问题描述】:

基于 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);        
   }

【问题讨论】:

    标签: opencv opencl


    【解决方案1】:

    我不确定是否有简单的方法可以使用给定的 OpenCV 二进制文件来确定它,但是您可以使用额外的定义自己重新编译 OpenCV(可以在 cmake 中指定):

    CV_OPENCL_RUN_VERBOSE

    有了这个定义,每个 OpenCL 实现可用的函数都将打印到控制台(stdout)以下消息:

    &lt;function name&gt;: OpenCL implementation is running

    关于您的问题 - 据我所知,目前 pyrMeanShiftFiltering 没有 OpenCL 实现。

    【讨论】:

    • 感谢您的回复。 pyrMeanShiftFiltering 没有 openCL 实现真是太可惜了。在 2.4.10 版本中,ocl::meanShiftFiltering 可用。他们拿走它的任何理由? \n 3.0 文档中有什么方法可以判断一个函数是否启用了 openCL?
    • 我不知道为什么会这样——也许你可以create a feature request 甚至添加实现并提出拉取请求。关于文档 - 我没有找到任何可能确定 OpenCL 实现是否可用...
    • 如我所见,pyrMeanShiftFiltering 的 cuda 版本存在。还有OpenCL-收费pyrUp和pyrDown。
    猜你喜欢
    • 1970-01-01
    • 2015-10-04
    • 2012-01-25
    • 1970-01-01
    • 2013-09-12
    • 2016-04-02
    • 2016-02-04
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多