在CMake中,我使用OpenCL Enable ON构建OpenCV(它自动检测到OPENCL_INCLUDE_DIR
路径但OPENCL_LIBRARY
为空,即使在点击配置后也是如此。OPENCL_LIBRARY
我看不到浏览按钮..生成opencv二进制文件后,我运行下面的代码
#include <iostream>
#include <fstream>
#include <string>
#include <iterator>
#include <opencv2/opencv.hpp>
#include <opencv2/core/ocl.hpp>
int main()
{
if (!cv::ocl::haveOpenCL())
cout << "OpenCL is not avaiable..." << endl;
else cout << "OpenCL is AVAILABLE! :) " << endl; //this is the output
cv::ocl::setUseOpenCL(true);
cout << context.ndevices() << " GPU devices are detected." << endl;
for (int i = 0; i < context.ndevices(); i++)
{
cv::ocl::Device device = context.device(i);
cout << "name: " << device.name() << endl;
cout << "available: " << device.available() << endl;
cout << "imageSupport: " << device.imageSupport() << endl;
cout << "OpenCL_C_Version: " << device.OpenCL_C_Version() << endl;
cout << endl;
} //this works & i can see my video card name & opencl version
cv::ocl::Device(context.device(0));
}
当我使用UMat
衡量效果时,(UMat)或不使用(Mat)OpenCL的性能没有任何差别。
我从这个link下载了AMD-APP-SDK并尝试构建但没有OpenCL二进制文件(相反,我看到了opengl dll文件[glew32.dll&amp; glut32.dll]。我如何构建OpenCV通过链接OPENCL_LIBRARY?
与OpenCL答案 0 :(得分:1)
我相信你有OpenCL,因此你调用haveOpenCL
和版本请求的结果。我不确定您的性能测试结果是否等同于您没有OpenCL。
如果你想了解OpenCL,我会退后一步,先找出来,然后尝试用它来理解OpenCV。
您的链接无效,您是否尝试this。它有一个指向当前AMD APP SDK(3.0)的链接我将通过该设置并确保您可以在您的系统上构建/运行OpenCL示例,然后您应该能够解决它在OpenCV中不起作用的原因(如果确实不是)。
至于表现,这取决于。每次向显卡发送数据或从显卡发送数据时,都需要付费;透明API旨在为您做出选择:如果将其发送到卡上以便更快处理,那么值得一游又一次......如果不值得旅行,您实际上会有更差的性能。此外,并非所有库都可以在GPU上运行。请参阅opencv.org上的一些解释。