OpenCV2.4错误:未知函数文件中没有GPU支持

时间:2012-04-20 09:52:43

标签: c++ opencv cuda gpu nvidia

我正在运行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

任何人都知道吗?请告诉我。感谢

3 个答案:

答案 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)

  1. 您说您自己构建了OpenCV,但错误消息(c:\slave\wininstallerMegaPack\...)中的文件路径清楚地表明您正在使用sourceforge中预构建的OpenCV。如果您确实自己构建了OpenCV,那么您必须对环境进行故障排除并找出使用错误二进制文件的原因。 (您可以做的最简单的事情 - 从您的PC中删除任何OpenCV二进制文件,并完全构建OpenCV和您的应用程序。)

  2. OpenCV 2.4测试版有一个打包错误,使得支持gpu的二进制文件变得毫无用处。因此,您必须从源代码重建库或使用OpenCV 2.3.1(确实是CUDA 4.0)。

  3. GPU演示包非常棘手 - 它拥有自己可能需要的所有二进制文件的副本。但它不能用于开发。

  4. 在几天内等待最终的OpenCV 2.4发布。 Windows程序包将包含有效的CUDA二进制文件。

  5. 修改

    OpenCV 2.4.0已经发布!