关于VS2010+cuda4.2+opencv2.4.3的配置
2014-04-05 17:08
471 查看
前一段时间做了些人脸检测的工作,对opencv中的分类器算法很感兴趣,但是cpu下速度很慢,几乎半秒一帧,实在无法忍受,于是后来做了些肤色加分类器的工作,由于不是计算机专业出身(本人是学光学工程的。。。),所以优化代码水平十分不足,准确率和速度根本无法兼顾。前几天查到资料说opencv2.2版本之后就已经加入了基于cuda的GPU加速,于是决定做一下实验。
整个过程花费了我几乎一周的时间,事实上这一周我有时间就忙活这个,自己的实验和论文校正都被搁置在一边,各种google,今天下午终于成功了!——我说的是配置成功了,因为我觉得这个东西实在是太难配置了。
我先描述下我这几天的工作,我办公室的电脑没有显卡,于是我之前用我的很挫很挫的笔记本做实验(09年买的Y450,装了好几个版本的cuda,发现它支持的最高版本是3.2),需要指出的是,cuda3.2和opencv2.2是匹配的,但是opencv2.2刚开始加入了gpu功能,所以它的函数很少,对于我这样基础不好的,几乎没有什么应用价值。所以虽然我花了一天的时间使用CMake重新编译了opencv的dll们,而且可以使用,但是我还是决定不使用这个“低端”的组合。
于是昨天开始到楼下实验室的电脑上“搞破坏”,我合计上次弄得组合太低端,这回我直接玩高级的吧,于是下了个cuda5.5,(我没下cuda6.0就不错了),下载完一看这都什么乱七八糟的啊,网上也没有教程教我怎么和opencv配合呀,就告诉我cmake这是闹哪样!!其实cuda5.5是在六维下载的,我就是图它下载的快。
英伟达的官网下东西好慢呀,我花了几乎半天的时间,下载了业界最看好的组合,就是cuda4.2+opencv2.4.3组合,这个组合可以保证你不用自己cmake,因为opencv2.4.3的build里已经事先cmake好了。
言归正题吧~
这两篇文章对我的帮助很大
点击打开链接
点击打开链接
比较重要的提示:如果你之前装过别的版本的cuda,那么一定要卸载干净,我之前按照这两篇博文所描述的方法没有配置成功,还搞死机了,已经到了系统还原的地步,不过还原到一个月前的存档点之后,再按照这些方法就成功了,不知道我遇到的是否是特例。。
首先根据自己电脑的配置到这里下载cuda4.2点击打开链接 toolkit driver SDK都要下载
实验室的电脑是64位台式机,所以下载之后的是这些
这几个程序没有严格的安装顺序。
当我安装driver的时候,弹出提示,无法找到兼容的图形硬件。
参考了这篇文章,但是并不完全,我们的显卡是GTX760,对应的是1187,所以打开C:\NVIDIA\DisplayDriver\301.32\WinVista_Win7_64\English\Display.Driver路径下的nv_disp.inf文件,记事本打开修改。可以去这里查看之间的对应关系。
然后安装opencv2.4.3,到官网下载,然后解压。
接下来按照前面提到的两篇文章来添加和移动一些dll和lib文件:(注意x64与x86的区别)
1、dll文件:NVIDIA GPU Computing Toolkit\CUDA\v4.2\bin中的cudart64_42_9.dll,cufft64_42_9.dll,npp64_42_9.dll
以及D:\ OpenCV2.4.3\opencv\build\gpu\x64\vc10\bin中的所有dll文件,全部复制并替换到D:\OpenCV2.4.3\opencv\build\x64\vc10\bin中,然后一定记得要在环境变量中的path中添加D:\OpenCV2.4.3\opencv\build\x64\vc10\bin这个路径
2、lib文件:将D:\OpenCV2.4.3\opencv\build\gpu\x64\vc10\lib中的lib们复制替换到D:\OpenCV2.4.3\opencv\build\x64\vc10\lib中。
至此为止,配置工作基本完成了,接下就是VS2010中的include和lib和附加依赖项的配置了,这些网上有很多资料。再次简单叙述一下:
include添加
D:\OpenCV2.4.3\opencv\build\include
lib添加
D:\OpenCV2.4.3\opencv\build\x64\vc10\lib
附加依赖项添加(存在记事本里,每次都这些,够偷懒的~)
opencv_calib3d243d.lib
opencv_contrib243d.lib
opencv_core243d.lib
opencv_features2d243d.lib
opencv_flann243d.lib
opencv_gpu243d.lib
opencv_highgui243d.lib
opencv_imgproc243d.lib
opencv_legacy243d.lib
opencv_ml243d.lib
opencv_objdetect243d.lib
opencv_ts243d.lib
opencv_video243d.lib
然后就可以运行这个代码
我得到了大约27fps的帧频,速度相当满意,下一周可以以此开始实验了。
欢迎交流~
整个过程花费了我几乎一周的时间,事实上这一周我有时间就忙活这个,自己的实验和论文校正都被搁置在一边,各种google,今天下午终于成功了!——我说的是配置成功了,因为我觉得这个东西实在是太难配置了。
我先描述下我这几天的工作,我办公室的电脑没有显卡,于是我之前用我的很挫很挫的笔记本做实验(09年买的Y450,装了好几个版本的cuda,发现它支持的最高版本是3.2),需要指出的是,cuda3.2和opencv2.2是匹配的,但是opencv2.2刚开始加入了gpu功能,所以它的函数很少,对于我这样基础不好的,几乎没有什么应用价值。所以虽然我花了一天的时间使用CMake重新编译了opencv的dll们,而且可以使用,但是我还是决定不使用这个“低端”的组合。
于是昨天开始到楼下实验室的电脑上“搞破坏”,我合计上次弄得组合太低端,这回我直接玩高级的吧,于是下了个cuda5.5,(我没下cuda6.0就不错了),下载完一看这都什么乱七八糟的啊,网上也没有教程教我怎么和opencv配合呀,就告诉我cmake这是闹哪样!!其实cuda5.5是在六维下载的,我就是图它下载的快。
英伟达的官网下东西好慢呀,我花了几乎半天的时间,下载了业界最看好的组合,就是cuda4.2+opencv2.4.3组合,这个组合可以保证你不用自己cmake,因为opencv2.4.3的build里已经事先cmake好了。
言归正题吧~
这两篇文章对我的帮助很大
点击打开链接
点击打开链接
比较重要的提示:如果你之前装过别的版本的cuda,那么一定要卸载干净,我之前按照这两篇博文所描述的方法没有配置成功,还搞死机了,已经到了系统还原的地步,不过还原到一个月前的存档点之后,再按照这些方法就成功了,不知道我遇到的是否是特例。。
首先根据自己电脑的配置到这里下载cuda4.2点击打开链接 toolkit driver SDK都要下载
实验室的电脑是64位台式机,所以下载之后的是这些
这几个程序没有严格的安装顺序。
当我安装driver的时候,弹出提示,无法找到兼容的图形硬件。
参考了这篇文章,但是并不完全,我们的显卡是GTX760,对应的是1187,所以打开C:\NVIDIA\DisplayDriver\301.32\WinVista_Win7_64\English\Display.Driver路径下的nv_disp.inf文件,记事本打开修改。可以去这里查看之间的对应关系。
然后安装opencv2.4.3,到官网下载,然后解压。
接下来按照前面提到的两篇文章来添加和移动一些dll和lib文件:(注意x64与x86的区别)
1、dll文件:NVIDIA GPU Computing Toolkit\CUDA\v4.2\bin中的cudart64_42_9.dll,cufft64_42_9.dll,npp64_42_9.dll
以及D:\ OpenCV2.4.3\opencv\build\gpu\x64\vc10\bin中的所有dll文件,全部复制并替换到D:\OpenCV2.4.3\opencv\build\x64\vc10\bin中,然后一定记得要在环境变量中的path中添加D:\OpenCV2.4.3\opencv\build\x64\vc10\bin这个路径
2、lib文件:将D:\OpenCV2.4.3\opencv\build\gpu\x64\vc10\lib中的lib们复制替换到D:\OpenCV2.4.3\opencv\build\x64\vc10\lib中。
至此为止,配置工作基本完成了,接下就是VS2010中的include和lib和附加依赖项的配置了,这些网上有很多资料。再次简单叙述一下:
include添加
D:\OpenCV2.4.3\opencv\build\include
lib添加
D:\OpenCV2.4.3\opencv\build\x64\vc10\lib
附加依赖项添加(存在记事本里,每次都这些,够偷懒的~)
opencv_calib3d243d.lib
opencv_contrib243d.lib
opencv_core243d.lib
opencv_features2d243d.lib
opencv_flann243d.lib
opencv_gpu243d.lib
opencv_highgui243d.lib
opencv_imgproc243d.lib
opencv_legacy243d.lib
opencv_ml243d.lib
opencv_objdetect243d.lib
opencv_ts243d.lib
opencv_video243d.lib
然后就可以运行这个代码
#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/contrib/contrib.hpp> #include <opencv2/objdetect/objdetect.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/gpu/gpu.hpp> #include <vector> using namespace std; using namespace cv; using namespace cv::gpu; void main() { string cascadeName = "haarcascade_frontalface_alt.xml"; CascadeClassifier_GPU cascade_gpu; VideoCapture capture(0); if(!capture.isOpened()) return; int gpuCnt = getCudaEnabledDeviceCount(); // gpuCnt >0 if CUDA device detected cout<<gpuCnt<<endl; if(gpuCnt==0) return; if(!cascade_gpu.load(cascadeName)) return; Mat frame; while(true) { capture >> frame; double t = (double)getTickCount(); GpuMat faces; Mat frame_gray; cvtColor(frame, frame_gray, CV_BGR2GRAY); GpuMat gray_gpu(frame_gray); equalizeHist(frame_gray,frame_gray); int detect_num = cascade_gpu.detectMultiScale( gray_gpu, faces, 1.2, 4, Size(20, 20) ); Mat obj_host; faces.colRange(0, detect_num).download(obj_host); Rect* cfaces = obj_host.ptr<Rect>(); for(int i=0;i<detect_num;++i) { Point pt1 = cfaces[i].tl(); Size sz = cfaces[i].size(); Point pt2(pt1.x+sz.width, pt1.y+sz.height); rectangle(frame, pt1, pt2, Scalar(255),3,8,0); } t=((double)getTickCount()-t)/((double)cvGetTickFrequency()*1000.); cout<<t<<" ms "<<1000/t<<" fps"<<endl; imshow("faces", frame); if(waitKey(1)==27) break; } }
我得到了大约27fps的帧频,速度相当满意,下一周可以以此开始实验了。
欢迎交流~
相关文章推荐
- Win7系统下,VS2010关于OpenCV2.0和OpenCV2.4.3的配置
- VS2010下配置OpenCV2.4.3 方法和配置OpenCV2.2一样
- VS2010 + OpenCV2.4.3 编译+配置(亲自验证)
- Opencv2.4.3在vs2010下的配置
- Opencv2.4.3 在win7(64位)下vs2010的配置 亲测
- OpenCV2.4.3在VS2008和VS2010平台上安装配置
- opencv 2.4.3 配置VS2010
- Win10 下Cmake3.8.0编译配置 Opencv3.2 + Cuda8.0 + VS2010
- Opencv2.4.3在VS2008和VS2010平台上安装配置图解
- VS2010下如何配置CUDA4.2
- Win64平台CUDA6.5+VS2010+opencv2.4.8配置
- GPU(CUDA)学习日记(四)----------VS2010 + win7 32位 + CUDA 4.2 环境配置以及一些小问题的解决
- VS2010下如何配置CUDA4.2
- Win7(32位)+VS2010+CUDA4.2配置
- VS2010配置opencv 2.4.3
- opencv 2.4.3 配置VS2010
- 关于Opencv2.4.9在vs2010中配置的问题
- opencv2.4.3在vs2010下的配置
- Kinect SDK1.6+OpenCV2.4.3+VS2010相关配置及代码运行
- VS2010中关于OpenCV 2.3.1开发环境配置及第一个OpenCV程序