在 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 的性能没有任何区别。
我从这里下载了AMD-APP-SDKlink http://developer.amd.com/amd-license-agreement-appsdk/并尝试构建,但没有 OpenCL 二进制文件(相反,我看到了 opengl dll 文件 [glew32.dll & glut32.dll]。如何通过链接 OPENCL_LIBRARY 使用 OpenCL 构建 OpenCV?
我相信您有 OpenCL,因此您致电的结果是haveOpenCL
并来自版本请求。我不确定您的性能测试结果是否等同于您没有 OpenCL。
如果你想了解 OpenCL,我会先退一步弄清楚,然后尝试用它来了解 OpenCV。
你的链接失效了,你试试this http://developer.amd.com/tools-and-sdks/opencl-zone/opencl-resources/getting-started-with-opencl/。它有一个到当前 AMD APP SDK (3.0) 的链接,我将完成该设置并确保您可以在您的系统上构建/运行 OpenCL 示例,然后您应该能够解决它在 OpenCV 中无法工作的原因(如果确实不是的话)。
至于性能,嗯,这取决于。每次向显卡发送数据或从显卡发送数据时,都会产生一定的成本;透明 API 旨在为您做出这样的选择:如果将其发送到卡以进行更快的处理值得来回……如果不值得,您的性能实际上会较差。此外,并非所有库都将在 GPU 上运行。请参阅一些解释opencv.org http://opencv.org/platforms/opencl.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)