我正在运行Visual Stadio2010,并且已经使用Cmake2.8构建了OpenCV2.4,在设置过程中已经设置了:
WITH_CUDA flag on
CUDA_SDK_ROOT_DIR :C:/ProgramData/NVIDIA Corporation/NVIDIA GPU Computing SDK 4.2
CUDA_TOOLKIT_ROOT_DIR: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v4.2
然后在visual studio中成功构建整个项目。 我正在使用NVIDIA Quadro 5000,并测试了“OpenCV-2.4.0-GPU-demos-pack-win32”中的示例,其中所有工作都没有任何错误。 核心和highgui库函数也可以正常工作。但是我无法在openCV中运行任何与GPU函数相关的东西。 此代码返回0,根据文档表示没有找到设备:
int deviceCount =cv::gpu::getCudaEnabledDeviceCount();
std::cout << "index " << deviceCount <<"\n";
与GPUdemopack示例中的设备编号相同,但任何其他gpu函数都显示以下错误:
OpenCV错误:未知函数文件中没有GPU支持c:\ slave \ wininstallerMegaPack \ src \ opencv \ modules \ core \ src \ gpumat.cpp,line193
任何人都知道吗?请告诉我。感谢
答案 0 :(得分:1)
从Cuda SDK(devicequery.exe
)运行CUDA sdk 4.1\C\bin\win32\Release
并检查卡的计算能力值。
然后在cmake for opencv中,检查CUDA_ARCH_BIN
是否包含此值。
早期的卡只做了1.1并且没有ARCH_PTX(新的CUDA二进制格式) - 只能为新格式制作opencv构建 - 这不需要那么多的运行时编译
答案 1 :(得分:1)
OpenCV 2.4仍处于测试阶段,尚未准备好用于严肃的项目。据我所知,它在 Windows 和 Mac OS X 上有几个构建问题。
我建议你坚持2.3.1这是最后一个稳定版本。不要使用2.4,除非你真的需要一个功能。
修改强>
顺便说一句,OpenCV 2.3.1仅支持CUDA 4.0。
答案 2 :(得分:1)
您说您自己构建了OpenCV,但错误消息(c:\slave\wininstallerMegaPack\...
)中的文件路径清楚地表明您正在使用sourceforge中预构建的OpenCV。如果您确实自己构建了OpenCV,那么您必须对环境进行故障排除并找出使用错误二进制文件的原因。 (您可以做的最简单的事情 - 从您的PC中删除任何OpenCV二进制文件,并完全构建OpenCV和您的应用程序。)
OpenCV 2.4测试版有一个打包错误,使得支持gpu的二进制文件变得毫无用处。因此,您必须从源代码重建库或使用OpenCV 2.3.1(确实是CUDA 4.0)。
GPU演示包非常棘手 - 它拥有自己可能需要的所有二进制文件的副本。但它不能用于开发。
在几天内等待最终的OpenCV 2.4发布。 Windows程序包将包含有效的CUDA二进制文件。
修改强>
OpenCV 2.4.0已经发布!