欢迎订阅我的YouTube频道,https://www.youtube.com/c/xugaoxiang

windows编译opencv,支持cuda加速

OpenCV开发 xugaoxiang 0评论

软硬件环境

  • windows 10 64bit
  • nvidia gtx 1070Ti
  • opencv 4.2.0-dev
  • cuda 10.2
  • cudnn 7.6.5.32
  • visual studio 2019

视频看这里

前言

本文的目标是在window10的系统上编译opencv的最新源码版本(4.2.0),使能cudacudnn加速。关于cudacudnnwindows10上的安装,请参考之前的文章 https://xugaoxiang.com/2019/12/18/windows-10-cuda-cudnn/

超级详细的图文教程

第一步去下载opencvopencv_contrib的源代码,我们放在一个统一的目录进行管理,比如我这里的C:\xugaoxiang\opencv_cuda,另外再创建一个vs文件夹,用来存放编译生成的文件,此时的目录结构

git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

由于opencv是基于cmake进行编译的,为了方便进行cmake编译参数的设定,我们去下载cmake并使用cmake-gui进行配置,下载地址是 https://cmake.org/download/

下载安装完毕后,我们打开cmake-gui

指定好Where is the source codeWhere to build the binaries的路径,然后点击下方的Configure按钮

出现了python2相关的错误,直接忽略,因为根本就没有装,而且版本也快被废弃了。我的python环境是anaconda,别忘了设定系统环境变量

接下来由于网络的原因,出现了两个下载的错误,我们放在一起来讲,先看错误提示

一个是ippicv,另一个是ffmpeg,我尝试过几次反复下载,都没有成功。所以只能另想办法,根据错误提示,打开文件opencv\3rdparty\ippicv\ippicv.cmake,找到下载地址

注意到这个链接并不是最终的下载地址,它需要进行拼接,首先找到${IPPICV_COMMIT}对应的值,然后找到软件压缩包的名称,这两个值都可以在当前的ippicv.cmake文件中找到

拼接好的最终的文件包下载路径如下

然后将链接的文件下载下来,用浏览器就可以

下载下来的zip包,还需要做最后一项工作,还是在ippicv.cmake文件中,找到OPENCV_ICV_HASH对应的值,然后将下载的zip包的文件进行重命名,得到1d222685246896fe089f88b8858e4b2f-ippicv_2019_win_intel64_20180723_general.zip,将此文件拷贝到opencv\.cache\ippicv

同样的步骤,我们把ffmpeg缺失的文件也下载下来,放到相应的目录

继续Configure,又有文件下载不了,face_landmark_module.dat,这是个跟人脸识别相关的文件,我们也按照之前的方法手动去下载,然后存放到相应的目录里去

继续进行Configure,又有错误出现

看提示,是opencv_contrib的路径没有指定,点击cmake-gui上的Add Entry,添加OPENCV_EXTRA_MODULES_PATH,指向下载好的opencv_contrib下的modules文件夹,特别注意,这里的目录分隔符一定要用/,即使是在windows上面,如下图所示

由于cuda安装版本的关系,我们用了最新的10.2,会出现cuda某些版本不支持的错误

通过grep工具,我们找到变量CUDA_ARCH_BIN是在vs/CMakeCache.txt中定义,我们直接修改这个文件中的值,去掉小的版本号

由于cmake-gui缓存的原因,我们还需要在cmake-gui中修改CUDA_ARCH_BIN的值

后面就比较顺利了,直至Configure成功

到这里,就可以去生成visual studio的工程了,点击cmake-gui上的Generate

接着,来到vs文件夹,用visual studio 2019打开文件OpenCV.sln,在右侧解决方案里的CMakeTargets下的INSTALL,右键选择生成

正式开始编译安装,等待一段时间,这里我跑了接近2个小时,取决于你的电脑性能

最后来到opencv安装路径查看

可以看到生成了跟cuda相关的dll!

小结

在整个编译安装的过程中,出现了多次的软件包下载不成功的问题,这个网络环境造成的,只能另想办法。要想成功,必须足够耐心。编译好的opencv库文件到底怎么用?我们后面继续。

参考资料

喜欢 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址