Skip to main content

Build OpenCV 4.5.2 with CUDA support | CMake+VS2019+Win10+CUDA

BigBookAbout 3 minC/C++CMakeWin10OpenCVVS2019Visual Studio 2019

使用C++进行计算机图像处理方向的开发,OpenCV是最常使用的Lib之一。个人对OpenCV的使用,大概从2.4版本开始,一直到现在的Release版4.5.2[现在是2021.06.08]。

OpenCV功能比较丰富,包含了传统图像处理的绝大部分经典算法,其基本矩阵类型Mat简单强大,现在还加入了DNN模块支持深度学习模型推理,这两部分都可以单独深入讨论。最近决定使用DNN模块进行算法部署,需要用到GPU加速,而官方提供的标准编译安装包不满足需求了,遂决定自己动手编译,定制符合自己需求的OpenCV Lib。这对自己日常的开发工作来说,其实是一本万利的。

由于业务需求,本文实践在Windows 10操作系统下进行。在Linux下进行此类编译更为便捷,问题也更少,步骤基本类似。好在Windows平台下的Visual Stuido对CMake的支持也越做越好了。

按照自己的习惯,我在自己的work目录下建立了一个名为opencv-github的文件夹,随后从git上把最新的opencv和opencv-contrib牵下来。opencv-contrib一般包含非release组件以及nonfree组件。

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

如果安装了visual stuido 2019,cmake-gui大概率可以从cmd控制台直接呼出来。打开cmake-gui后,配置一下源码路径和编译路径。我的配置如下:

源码路径 D:/WORK/opencv-github/opencv

编译路径 D:/WORK/opencv-github/opencv/build

image
image

点击Configure,选择vs2019 x64编译

image
image
image
image

第一次Configure,ippicv依赖包下载失败,重新configure了一次,这次成功了。

image
image

搜索OPENCV_EXTRA_MODULES_PATH选型,填入OpenCV Contrib的路径

D:/WORK/opencv-github/opencv_contrib/modules
image
image

搜索cuda,勾选OPENCV DNN CUDA和WITH CUDA。不要勾选 BUILD CUDA STUBS。

cuda是要提前安装的,cudnn最好也安装上,注意cuda和cudnn版本的对应。

再次点击configure。

image
image

选中BUILD opencv world选项。这里主要是为了使用便捷,一个胜过你所有,不必单独一个个去链接。当然,单独选择链接组件的方式更有利于控制release程序的体积,有利有弊吧。

image
image

选中 enable nonfree选项,打开这个选项会把一些不能免费商用的算法编译进去,做些研究和实验还是可以的。之前的nonfree算法中最著名的当属sift,不过现在sift已经免费啦。

image
image

现在点击generate

image
image

Generate结束。可以点击Open Project了。

image
image

这样就呼出了宇宙第一IDE 2019。然后就可以开始编译啦~

image
image

展开CMakeTargets,选择ALL BUILD

image
image

右键菜单选择build或者直接f7键,即可开始编译。ALL BUILD编译结束后,再选中INSTALL执行编译,这样编译出来的头文件、lib文件、dll文件和cmake文件就在开头提到的build目录下的install目录下面了。其实这里的ALL BUILD和INSTALL,相当于linux下面常见的make和make install。

现在已经有了头文件、lib文件、dll文件和cmake文件,就可以开始愉快的开发了哦。

Last update:
Contributors: Xuling Chang