我正在尝试在 OpenCV 上启用 OpenCL 的情况下运行简单的代码。
我已经阅读了 OCL 文档的介绍,并且按照说明,我使用以下标志构建了 opencv:WITH_OPENCL=ON。
我通过执行 cmake -DWITH_OPENCL=ON 然后在 Mac (OS X Yosemite) 上构建 opencv 来做到这一点。
然后我尝试运行我的代码,但是根据我的代码,haveOpenCL() 是错误的。
#include <iostream>
#include <fstream>
#include <string>
#include <iterator>
#include <opencv2/opencv.hpp>
#include <opencv2/core/ocl.hpp>
using namespace std;
int main ()
{
cv::ocl::setUseOpenCL(true);
cout << cv::ocl::haveOpenCL() << endl;
if ( ! cv::ocl::haveOpenCL ())
{
cout << "OpenCL IS not avaiable ..." << endl ;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有人知道如何启动和运行 OpenCV-OpenCL 吗?
更新:
我在 opencv/build 中检查了我的 cvconfig.h 文件,这是关于 OpenCL 的内容:/* OpenCL Support // #undef HAVE_OPENCL // #undef HAVE_OPENCL_STATIC // #undef HAVE_OPENCL_SVM */
我假设如果 OpenCL 真的启用了,那么第二行应该类似于 #define HAVE_OPENCL 1
这是自动生成的,那么我该如何解决这个问题,使 HAVE_OPENCL 为 1?
这就是我安装 OpenCV 3.0 的方式,也是我检查它是否正常工作的方式。在此处检查文档:http : //docs.opencv.org/modules/ocl/doc/introduction.html
要正确运行 OCL 模块,您需要拥有设备供应商提供的 OpenCL 运行时,通常是设备驱动程序。
要启用 OCL 支持,请使用 WITH_OPENCL=ON 的 CMake 配置 OpenCV。设置标志后,如果安装了 OpenCL SDK,则构建功能齐全的 OpenCV OCL 模块。否则,模块可能无法构建。
所以我会尽量确保你有支持它的 GPU,然后确保你有驱动程序(SDK?)我在安装 OpenCV 之前首先使用 OpenCL 做了一些工作,以确保我对它们如何独立工作有一定的了解。