Visual studio 2008 OpenCV 2.4.3rc和CUDA 4.2:“;OpenCV错误:不支持GPU“;
我在这张相册中上传了几个截图: 我正试图在VisualStudio2008的OpenCV中启动并运行GPU。我正在运行OpenCV GPU示例代码之一bgfg_segm.cpp。然而,当我编译时(没有编译错误),它抛出一个“OpenCV错误:没有GPU支持”Visual studio 2008 OpenCV 2.4.3rc和CUDA 4.2:“;OpenCV错误:不支持GPU“;,visual-studio-2008,opencv,cuda,gpu,Visual Studio 2008,Opencv,Cuda,Gpu,我在这张相册中上传了几个截图: 我正试图在VisualStudio2008的OpenCV中启动并运行GPU。我正在运行OpenCV GPU示例代码之一bgfg_segm.cpp。然而,当我编译时(没有编译错误),它抛出一个“OpenCV错误:没有GPU支持” Windows 7,32位 Visual Studio 2008 nVidia Quadro 1000M,驱动程序版本301.27 OpenCV 2.4.3rc(使用随附的预编译库) CUDA工具包4.2,CUDA SDK 我可以运行C
- Windows 7,32位
- Visual Studio 2008
- nVidia Quadro 1000M,驱动程序版本301.27
- OpenCV 2.4.3rc(使用随附的预编译库)
- CUDA工具包4.2,CUDA SDK
环境变量时
检查CUDA的路径。我的一个人在bin
之前有一个反斜杠(\
)太多,就像这样C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\\bin代码>。CUDA及其SDK有三个参考,请查看它们。也许这只是一时的侥幸。我不确定这是否重要
另一个旁注:我安装了Visual Studio 2010 Express,请注意sgar91的说明是针对Visual Studio 2010(也称为“vc10”)的。它在Visual Studio 2008(又名“vc9”)或Visual Studio 2012(又名“vc11”)中不起作用,因为对于vc9和vc11(仅vc10),没有使用OpenCV 2.4.3预构建的库文件。另外,请注意,如果您使用的是64位Windows,那么在遵循他的指南时,您应该将所有X86路径(32位)更改为X64(64位),并且在Visual Studio中,您需要将解决方案平台从Win32(位于“调试”或“发布”旁边顶部、中部的下拉菜单)更改为X64
还有一个旁注:OpenCV 2.4.3支持CUDA 4.2(或者说LIB是用CUDA 4.2编译的)。如果安装CUDA 5.0,它将无法工作。它抛出一条错误消息。记不起是哪一个。如果您绝对需要CUDA 5.0,您必须等待OpenCV将其包含在未来版本中,或者通过CMake编译您自己的LIB
我运行了下面的代码(它来自,但我必须更正其中的一行以使其编译),它编译并显示了图像,所以我希望这意味着一切正常
#ifdef _DEBUG
#pragma comment(lib,"opencv_gpu243d")
#pragma comment(lib,"opencv_core243d")
#pragma comment(lib,"opencv_highgui243d")
#else
#pragma comment(lib,"opencv_core243")
#pragma comment(lib,"opencv_highgui243")
#pragma comment(lib,"opencv_gpu243")
#endif
#include <iostream>
#include "opencv2/opencv.hpp"
#include "opencv2/gpu/gpu.hpp"
int main (int argc, char* argv[])
{
try
{
cv::Mat src_host = cv::imread("file.png", CV_LOAD_IMAGE_GRAYSCALE);
cv::gpu::GpuMat dst, src;
src.upload(src_host);
cv::gpu::threshold(src, dst, 128.0, 255.0, CV_THRESH_BINARY);
cv::Mat result_host(dst);
//cv::Mat result_host = dst; //old line commented out
cv::imshow("Result", result_host); //new line added by me
cv::waitKey();
}
catch(const cv::Exception& ex)
{
std::cout << "Error: " << ex.what() << std::endl;
}
return 0;
}
\ifdef\u调试
#pragma注释(lib,“opencv_gpu243d”)
#pragma注释(lib,“opencv_core243d”)
#pragma注释(lib,“opencv_highgui243d”)
#否则
#pragma注释(lib,“opencv_core243”)
#pragma注释(lib,“opencv_highgui243”)
#pragma注释(lib,“opencv_gpu243”)
#恩迪夫
#包括
#包括“opencv2/opencv.hpp”
#包括“opencv2/gpu/gpu.hpp”
int main(int argc,char*argv[])
{
尝试
{
cv::Mat src_host=cv::imread(“file.png”,cv\u LOAD\u IMAGE\u灰度);
cv::gpu::GpuMat dst,src;
src.upload(src_主机);
cv::gpu::threshold(src、dst、128.0、255.0、cv_THRESH_二进制);
cv::Mat结果_主机(dst);
//cv::Mat result_host=dst;//已注释掉旧行
cv::imshow(“Result”,Result_host);//我添加的新行
cv::waitKey();
}
捕获(常量cv::异常和异常)
{
std::cout您使用的是那些在不支持GPU的情况下编译的OpenCV二进制文件
C:\opencv\build\x86\…
不支持GPU
您必须使用build\gpu
文件夹中的二进制文件和lib文件
C:\opencv\build\gpu\x86\…
支持gpu
更新:
程序:
在Visual Studio 2010中,转到项目属性。在VC++目录中,您将看到以下页面:
将OpenCVinclude
文件夹的路径添加到include Directories文本框中。确保用分号分隔多个路径,并且任何路径中都没有空格
同样,在库目录文本框中为GPU和非GPU版本添加OpenCVlib
文件夹的路径。(不要忘记分号)
重要提示:在框中写入路径时,首先写入GPU路径,然后写入非GPU路径
下一步是添加OpenCV的bin
文件夹的路径。但不是在visual studio中,而是在path
环境变量中,如下所示:
- 右键单击我的电脑
转到属性
转到环境变量
部分
编辑系统变量路径
将C:\OpenCV\build\gpu\x86\vc10\bin
和C:\OpenCV\build\x86\vc10\bin
附加到路径中。别忘了用分号分隔不同的值。另外-->gpu优先
保存并退出
重新启动Visual Studio。链接器和#include
指令现在将识别OpenCV库。
由于我们还添加了GPU库的路径,所以完整的GPU支持将在OpenCV中提供
要使用OpenCV的GPU功能,只需执行以下操作:
#包括opencv2/gpu/gpu.hpp
- 为调试配置指定
opencv\u gpu243d.lib
,或在项目属性的Linker->Input
部分的附加依赖项字段中为发布配置指定opencv\u gpu243.lib
一些附加信息:
在VisualStudio中,有一种简单的方法可以链接库,而不是在项目属性中指定它们
#ifdef _DEBUG
#pragma comment(lib,"opencv_core243d")
#pragma comment(lib,"opencv_highgui243d")
#else
#pragma comment(lib,"opencv_core243")
#pragma comment(lib,"opencv_highgui243")
#endif