windows + opencv 4.4 + cuda 环境搭建

3,500 阅读3分钟

1.下载vs2015/2017/2019,根据实际使用决定安装visual stdio版本;同时安装CMake

2.下载 OpenCV4.x 以及对应的 opencv_contrib-4.x

!!!4.x版本的opencv跟cuda12.0版本以上的是无法编译的,texture模块在cuda12.0sdk中被删除了

2.1.opencv源码下载地址

opencv.org/releases/
github.com/opencv/open…

2.2.opencv_contrib地址,第二个是国内的一个站点,速度较快

github.com/opencv/open… www.raoyunsoft.com/opencv/open…

2.3.下载CUDA和cuDNN安装文件

首先通过命令 nvidia-smi指定读取当前显卡的驱动版本,再根据当前的驱动版本去选择对应的cuda版本

cuda下载链接

docs.nvidia.com/cuda/cuda-t…

根据cuda的版本,选择对应的cuDNN,下载链接

developer.nvidia.com/rdp/cudnn-d…

安装cuda

运行cuda安装包,第一次安装可以选择自定义,全部组件都勾上安装 安装过程中会有一个安装位置的提示,这里暂时使用默认位置,记住这个位置,后面配置环境变量要用,其他的直接下一步,直到安装结束。

67a199557b8b307bd91313f80c0b9bb.png

添加cuda的环境变量,如果存在则不需要添加。

image.png

打开命令行,输入 nvcc -V,若可以打印cuda版本信息,则cuda安装成功

配置cuDNN

解压cuDNN对应的zip压缩文件,复制里面的bin/include/lib三个文件夹,找到之前提示的安装位置,将这三个文件夹拷贝到这个文件内。 配置cuDNN的环境变量,新建四个路径直接添加到path中,如果已存在不需要重复添加

image.png

cuDNN配置完成

安装opencv编译需要的第三方库 3rdparty

这些库会在cmake过程中自行下载,但是如果网络环境不好或者无法上外网,则会下载失败。 这里建议提前下载好放到源码目录下的.cache文件夹中。

注意不要鼠标右键新建文件夹,建立不了前缀名是"."的文件夹,需要用命令行,> md .cache

也可以直接运行cmake,如果make失败也会给你创建好.cache以及里面的子目录。 以ffmpeg下载失败的情况为例,进行手动下载ffmpeg所需的依赖库。

第三方库的下载链接

github.com/opencv/open… 在源码目录中找到./3rdparty/ffmpeg/ffmpeg.cmake

image.png

这里第一行提示的就是所需要下载的版本,到上面的下载链接中找到ffmpeg/master_20200609这个版本

image.png

下载该压缩包并解压,找到其中的三个文件。

image.png

将这三个文件拷贝到.cache/ffmpeg中,再根据./3rdparty/ffmpeg/ffmpeg.cmake文件中要求的哈希值FFMPEG_FILE_HASH 修改这三个文件的文件名前缀

image.png

得到

image.png

编译依赖的ffmpeg库就准备好了。 类似的准备好其他库就可以运行CMake进行编译了。

编译选项的选择

  1. 勾选BUILD_opencv_world 可以直接生成opencv_world440.dll,调用的时候直接调用这一个库文件
  2. OPENCV_EXTRA_MODULES_PATH选项中,填写opencv_contrib解压目录下,modules文件夹的路径,这样就把opencv_contrib编译进去了。
  3. 勾选OPENCV_ENABLE_NONFREE,这个就是启用SURF特征提取算法的。

后续编译发现 cuda12.0版本中删除了对texture纹理相关的应用,opencv4.x版本中是有使用该模块的,所以无法编译通过!!!