转自http://blog.sina.com.cn/s/blog_b1e24f1d0102wsdr.html
原文地址:编译opencv和cuda的几个注意事项作者:小坏蛋
最近要用到cuda做一些并行加速优化,由于一部分是关于图像的,所以需要用到集成了cuda的opencv库。直接在官网下载下来的opencv有些版本是没有把opencv编译进去的,所以就需要我们自己重新编译。
Windows环境下用到的工具是opencv、Cmake、vs,和一台已经装好显卡、显卡驱动、cuda的电脑。
1. 安装显卡并测试:
插好显卡-安装驱动-安装cuda,过程简单,网上资料很多,不具体介绍了,这里说下注意事项。
测试显卡是否安装好,有两个指令,
(1)命令提示符里输入nvcc -V,如果出现版本号,如下图1。
(2)在C:Program FilesNVIDIA CorporationNVSMI路径下面打开命令提示符(文件夹空白处按住shift的同时右键,可以打开命令提示符),因为这个路径没有加到系统环境变量所以要切换过来,(建议把这个路径也添加到环境变量,以后用起来方便),输入nvidia-smi后回车,如果出现下面图片2,说明显卡驱动和cuda都安装成功,这时候就可以正常用了。
有一种情况是可以出现图1,但是图2不能出现,可能有多种原因,我遇到的情况是,由于安装显卡的时候我没有把连接显示器的视频线接到显卡的视频接口上,也就是视频线还在主板的视频接口,我猜有可能这样显卡没被激活,所以用不了,解决方法就是视频线接到显卡接口,图2就出现了。
2. 编译opencv。具体编译的方法配置网上很多,这里只说一些奇葩的问题。
(1)使用编译好的opencv编写新程序的时候,Debug模式下总是出现0xc000000d错误。Release模式下没问题。
解决方法:看一下你的磁盘是什么格式,如果是在FAT32格式下用Cmake和vs进行编译的话,建议把Cmake和vs以及产生的中间文件都放到NTFS格式的磁盘下全部重新操作,这个问题就可以解决。
(2)程序第一次执行到upload的时候(类似图5),等待的时间很长,可能会有1、2分钟之久,然后继续正常向下执行。
解决方法:首先在https://developer.nvidia.com/cuda-gpus#collapse4 查找你显卡对应的Compute Capability,比如我的K1200显卡对应的是5.0,如下图
然后在cmake更改相应参数,如下图
然后再重新编译opencv和cuda。然后再使用就会发现程序的执行速度正常了。
具体的原理可以参考:http://docs.opencv.org/2.4/modules/gpu/doc/introduction.html#compilation-for-different-nvidia-platforms
http://answers.opencv.org/question/52304/long-delay-on-cvgpugpumatupload-after-upgrade-to-gtx970/