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

Posted

技术标签:

【中文标题】OpenCV2.4 错误:未知函数文件中不支持 GPU【英文标题】:OpenCV2.4 Error: No GPU support in unknown function file 【发布时间】:2012-05-01 21:40:41 【问题描述】:

我正在运行 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 错误:未知函数文件 c:\slave\wininstallerMegaPack\src\opencv\modules\core\src\gpumat.cpp,line193 中没有 GPU 支持

任何机构有任何想法?请告诉我。谢谢

【问题讨论】:

CUDA SDK 示例是否编译和运行? 没试过,SDK里有现成的样例吗? 我刚刚从 C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.2\C\bin\win32\Release 运行 simpleGl.exe,它确实有效。 你有什么驱动?你为什么使用 4.2? OpenCV 2.4 至少需要 CUDA 4.1,所以看起来你的东西应该可以工作。 【参考方案1】:

OpenCV 2.4 仍处于测试阶段,尚未准备好用于严肃的项目。据我测试,它在 WindowsMac OS X 上有几个构建问题。

我建议您坚持使用最后一个稳定版本 2.3.1。不要使用 2.4,除非其中有您真正需要的功能。

编辑:

顺便说一句,OpenCV 2.3.1 只支持 CUDA 4.0。

【讨论】:

感谢您的回复。我期待着得到你的答复。你知道openCV2.3.1是否支持cuda 4.2吗?? 不,OpenCV 2.3.1 仅支持 CUDA 4.0。如果可以的话,最好降级到这个版本。不幸的是,OpenCV 2.4 还没有为世界做好准备。 非常感谢。我会尝试并尽快回复您 您好,我再次使用 Cmake 构建 OpenCV 2.3.1,Cmake 识别以下值,我没有更改它。 CUDA_ARCH_BIN:2.0 2.1 (2.0), CUDA_Arch_PTX: 2.0, CUDA_SDK_ROOT_DIR:C:/ProgramData/NVIDIA Corporation/NVIDIA GPU Computing SDK 4.2/C 和 CUDA_TOOLKIT_ROOT_DIR:C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v4.0, I已经在 Visual stuio 中检查了 CUDA,我确定 cuda 工作正常,我也设法运行了 gpu_performance 示例,但无法运行其余示例,并且我的测试仍然存在同样的问题。 Tanx 为您的帮助,我确实创建了一切,现在 opencv2.4 正在工作并识别 GPU。谢谢你:D【参考方案2】:

从 Cuda SDK (CUDA sdk 4.1\C\bin\win32\Release) 运行 devicequery.exe 并检查卡的计算能力值。

然后在 cmake for opencv 中,检查 CUDA_ARCH_BIN 是否包含此值。

早期的卡只有 1.1 并且没有 ARCH_PTX(新的 CUDA 二进制格式) - 可以只为新格式构建 opencv - 不需要那么多运行时编译

【讨论】:

我只是从这个路径运行 deviceQuery.exe : C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.2\C\bin\win32\Release ,CUDA能力是2.0并添加到“ CUDA_ARCH_BIN”,我要再次构建 openCV。希望这次能成功【参考方案3】:

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

    OpenCV 2.4 beta 有一个打包错误,导致启用 gpu 的二进制文件无用。所以你必须从源代码重建库或使用 OpenCV 2.3.1(确实是 CUDA 4.0)。

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

    等待几天后最终发布 OpenCV 2.4。 Windows 软件包将包含工作的 CUDA 二进制文件。

编辑:

OpenCV 2.4.0 已经发布!

【讨论】:

我看到你在 OpenCV 标签中非常活跃。你每天都在使用 OpenCV 吗? 你猜对了,我猜对了。我正在为 android 开发计算机视觉软件。

以上是关于OpenCV2.4 错误:未知函数文件中不支持 GPU的主要内容,如果未能解决你的问题,请参考以下文章

opencv 2.4.4没有gpu支持错误

OpenCv Unspecified 错误(节点不代表用户对象(未知类型?))

急!求解vc2010下opencv2.4.3编译错误 fatal error C1083: 无法打开包括文件:“opencv2/opencv.hpp”

了解 openCV 2.4 中的感兴趣区域

GRPC状态码

VideoCapture 在 OpenCV 2.4.2 中不起作用