Win10编译OpenCV4.4.0+opencv_contrib(带CUDA)

在使用OpenCV4.4.0的dnn模块调用TensorFlow2训练好的模型时发现,官网下载的发布版没有编译CUDA相关代码,需要手动添加CUDA选项,重新编译OpenCV的源码,才能调用GPU进行模型前向推理。经过多次测试,推荐使用VS2017编译。

1、环境准备

  1. 安装VS2017(要求先于安装CUDA)
  2. 安装CUDA和cuDNN
  3. 安装CMake(推荐3.17以上的版本)
  4. 下载OpenCV4.4.0
  5. 下载对应版本的opencv_contrib

2、设置文件目录

为了便于描述,笔者将按照自己的文件目录设置介绍后续过程,在此说明笔者的目录设置。

  1. 在一个熟悉的目录中,新建一个文件夹opencv4,把opencv4.4.0的源码解压到此文件夹;
  2. 然后再在opencv4文件夹中新建一个opencv_contrib文件夹,把opencv_contrib4.4.0的源码解压到里面;
  3. 最后在opencv4文件夹中新建一个build文件夹。

3、用CMake生成VS2017工程文件

1.设置源码和构建路径

打开CMake,“Where is the source code:”选择yourpath/opencv4,“Where to build the binaries:”选择yourpath/opencv4/build

2.配置构建选项

  1. 点击“Configure”配置“Specify the generator for this project”为VS2017,“Optional platform for generator”为x64,然后点“Finish”结束
  2. 之后CMake会进行初次配置,然后显示出很多可配置选项,接下来修改这些选项
  3. 勾选“WITH_CUDA”、“OPENCV_DNN_CUDA”、“BUILD_opencv_world”
  4. 搜索含“test”的选项,都不勾选,搜索含“python”的选项,都不勾选
  5. 找到“OPENCV_EXTRA_MODULES_PATH”,设置为yourpath/opencv4/opencv_contrib/modules
  6. 再次点击“Configure”,过程中会下载一些文件,可能会下载失败,可以参考文章1和文章2解决。

3.生成并打开VS工程

上一步完全没有错误后,依次点击“Generate”和“Open Project”即可打开生成的VS工程。

4、编译

  1. 用VS2017打开上一步生成的工程以后,分别在Debug x64和Release x64模式下,生成整个解决方案,根据电脑配置的不同,每次编译预计会花费2~3个小时
  2. 编译完成后,分别在Debug x64和Release x64模式下,仅生成INSTALL项目

5、移动编译好的OpenCV到合适的目录

上一步正常编译完成后,应该没有任何编译失败的项目,在yourpath/opencv4/build/install文件夹下就是发布版OpenCV的build文件夹中的内容,可以把它们移动到C盘。例如C:\Program Files\opencv4\build,下面以此路径为例继续介绍。

6、配置环境变量

  1. 新建系统环境变量OpenCV_DIR,值为C:\Program Files\opencv4\build
  2. 把C:\Program Files\opencv4\build\x64\vc15\bin添加到系统环境变量Path中

7、在VS2017中配置OpenCV

由于是用VS2017编译的OpenCV,在C:\Program Files\opencv4\build\x64\目录下只有vc15,只能用于配置VS2017

  1. 用VS2017打开任意一个工程,打开“视图”->“属性管理器”,双击打开其中的“工程名”->“Debug | x64”->“Microsoft.Cpp.x64.user”
  2. 选择“通用属性”->“VC++目录”,在“包含目录”中添加C:\Program Files\opencv4\build\include和C:\Program Files\opencv4\build\include\opencv2,在“库目录”中添加C:\Program Files\opencv4\build\x64\vc15\lib
  3. 选择“通用属性”->“链接器”->“输入”,在“附加依赖项”中添加opencv_world440d.lib,其中的“440”表示版本为4.4.0,后面的“d”表示Debug版
  4. Release版本的配置也是类似,只是“附加依赖项”中添加的是不带“d”后缀的opencv_world440.lib

至此就完成了OpenCV4.4.0编译和配置。

你可能感兴趣的:(安装教程,opencv,cmake)