环境搭建

VS 2019
CUDA 10.2
CUDNN
Cmake 3.18.1
OpenCV 4.4.0opencv-contribe 4.4.0

编译步骤

1、打开Cmake,选择opencv4.4.0源码路径,选择编译完成之后的保存路径,选择VS版本。

gpu加速矩阵运算Java库 gpu加速编译_cmake


2、等待configure完成之后,可能会出现下载的错误,具体就是xfeatures2dFFMPEGIPPICV的下载错误,如图:

gpu加速矩阵运算Java库 gpu加速编译_gpu加速矩阵运算Java库_02

gpu加速矩阵运算Java库 gpu加速编译_CUDA_03


gpu加速矩阵运算Java库 gpu加速编译_CUDA_04


因为下载的原因导致这些错误,因此可以手动下载这些第三方库,对应的网址可在每个第三方库所在文件夹中的cmake文件中找到,cmake文件的位置具体查看错误的信息。【FFMPEG下载】

根据错误中的提示:

gpu加速矩阵运算Java库 gpu加速编译_2d_05


打开D:/OpenCV4.4.0/sources/3rdparty/ffmpeg/ffmpeg.cmake文件,找到其中的下载网址信息:

gpu加速矩阵运算Java库 gpu加速编译_gpu加速矩阵运算Java库_06


继续找到网址信息中的${FFMPEG_BINARIES_COMMIT}值:

gpu加速矩阵运算Java库 gpu加速编译_2d_07


继续找到要下载的文件的名称,一共要下载三个,两个dll一个cmake:

gpu加速矩阵运算Java库 gpu加速编译_cmake_08


下载好之后,在ffmpeg.cmake文件中,找到对应的HASH对应的值:

gpu加速矩阵运算Java库 gpu加速编译_CUDA_09


根据该值,将下载的文件进行重命名,得到:

854b3460c435d04277e1f1ecc06cb809-opencv_videoio_ffmpeg.dll

3a46d6356220796e044817ae3a21cc31-opencv_videoio_ffmpeg_64.dll

ad57c038ba34b868277ccbe6dd0f9602-ffmpeg_version.cmake,将这些文件拷贝到D:\OpenCV4.4.0\sources\.cache\ffmpeg下:

gpu加速矩阵运算Java库 gpu加速编译_CUDA_10


【IPPICV下载】

用同样的方法找到IPPICV的下载地址:

根据错误中的提示:

gpu加速矩阵运算Java库 gpu加速编译_cmake_11


打开D:/OpenCV4.4.0/sources/3rdparty/ippicv/ippicv.cmake文件,找到其中的下载网址信息:

gpu加速矩阵运算Java库 gpu加速编译_gpu加速矩阵运算Java库_12


继续找到网址信息中的${IPPICV_COMMIT}值:

gpu加速矩阵运算Java库 gpu加速编译_cmake_13


继续找到要下载的zip包的名称:

gpu加速矩阵运算Java库 gpu加速编译_CUDA_14



下载好之后,在ippicv.cmake文件中,找到OPENCV_ICV_HASH对应的值:

gpu加速矩阵运算Java库 gpu加速编译_opencv_15


根据该值,将下载的zip包的文件进行重命名,得到:

879741a7946b814455eee6c6ffde2984-ippicv_2020_win_intel64_20191018_general.zip

将该文件拷贝到D:\OpenCV4.4.0\sources\.cache\ippicv下:

gpu加速矩阵运算Java库 gpu加速编译_cmake_16


【xfeatures2d中缺失的.i文件下载】

根据错误中的提示,发现要下载的都是这些.i文件,一共要下载11个,所以xfeatures2d有11个错误:

gpu加速矩阵运算Java库 gpu加速编译_gpu加速矩阵运算Java库_17


gpu加速矩阵运算Java库 gpu加速编译_gpu加速矩阵运算Java库_18



gpu加速矩阵运算Java库 gpu加速编译_2d_19


下载完之后把这些文件放入./opencv_contrib-4.4.0/modules/xfeatures2d/src文件夹下。

3、解决了上面的错误,接着继续,勾选如下选项:

(1)勾选BUILD_opencv_world

gpu加速矩阵运算Java库 gpu加速编译_cmake_20


(2)

  • 勾选OPENCV_DNN_CUDA
  • OPENCV_EXTRA_MODULES_PATH中添加解压好的opencv_contrib-4.4.0中modules路径

(3)勾选WITH_CUDA,点击Configure

gpu加速矩阵运算Java库 gpu加速编译_gpu加速矩阵运算Java库_21


(4)第二次configure完成之后,此时需要更改gpu的算力值,更改CUDA_ARCH_BIN,只留下一个值。然后勾选CUDA_FAST_MATH,点击Configure

gpu加速矩阵运算Java库 gpu加速编译_gpu加速矩阵运算Java库_22


(5)等待Configure完成之后,查看是否检测到了CUDAcuDNN,都出现YES之后,说明没有问题。如果没有检测到的话,需要确认是否CUDAcuDNN版本是否正确,否则后面的编译将不会编译CUDA模块。

gpu加速矩阵运算Java库 gpu加速编译_CUDA_23


再次确认:

gpu加速矩阵运算Java库 gpu加速编译_2d_24


点击Generate

4、显示 Generate Done,且没有错误的时候。

  • D:\OpenCV4.4.0\sources\modules\features2d文件夹复制到D:\OpenCV4.4.0\build-contrib440文件夹中,否则后面编译了好久之后会报错:无法打开"features2d/test/test_detectors_regression.impl.hpp",No such file or directory,报错之后就要重新编译太浪费时间了。
  • D:\OpenCV4.4.0\build-contrib440路径下,打开OpenCV.sln工程,在Release模式下,选中ALL_BUILD,右键生成,等待编译完成。

    4、编译好了之后,右键INSTALL->生成

    然后会在D:\OpenCV4.4.0\build-contrib440文件夹下生成install文件夹。