环境搭建
VS 2019
CUDA 10.2
CUDNN
Cmake 3.18.1
OpenCV 4.4.0opencv-contribe 4.4.0
编译步骤
1、打开Cmake,选择opencv4.4.0源码路径,选择编译完成之后的保存路径,选择VS版本。
2、等待configure完成之后,可能会出现下载的错误,具体就是xfeatures2d
、FFMPEG
、IPPICV
的下载错误,如图:
因为下载的原因导致这些错误,因此可以手动下载这些第三方库,对应的网址可在每个第三方库所在文件夹中的cmake
文件中找到,cmake文件的位置具体查看错误的信息。【FFMPEG下载】
根据错误中的提示:
打开D:/OpenCV4.4.0/sources/3rdparty/ffmpeg/ffmpeg.cmake
文件,找到其中的下载网址信息:
继续找到网址信息中的${FFMPEG_BINARIES_COMMIT}
值:
继续找到要下载的文件的名称,一共要下载三个,两个dll一个cmake:
下载好之后,在ffmpeg.cmake
文件中,找到对应的HASH
对应的值:
根据该值,将下载的文件进行重命名,得到:
854b3460c435d04277e1f1ecc06cb809-opencv_videoio_ffmpeg.dll
,
3a46d6356220796e044817ae3a21cc31-opencv_videoio_ffmpeg_64.dll
,
ad57c038ba34b868277ccbe6dd0f9602-ffmpeg_version.cmake
,将这些文件拷贝到D:\OpenCV4.4.0\sources\.cache\ffmpeg
下:
【IPPICV下载】
用同样的方法找到IPPICV的下载地址:
根据错误中的提示:
打开D:/OpenCV4.4.0/sources/3rdparty/ippicv/ippicv.cmake
文件,找到其中的下载网址信息:
继续找到网址信息中的${IPPICV_COMMIT}
值:
继续找到要下载的zip包的名称:
下载好之后,在ippicv.cmake
文件中,找到OPENCV_ICV_HASH
对应的值:
根据该值,将下载的zip包的文件进行重命名,得到:
879741a7946b814455eee6c6ffde2984-ippicv_2020_win_intel64_20191018_general.zip
,
将该文件拷贝到D:\OpenCV4.4.0\sources\.cache\ippicv
下:
【xfeatures2d中缺失的.i文件下载】
根据错误中的提示,发现要下载的都是这些.i
文件,一共要下载11个,所以xfeatures2d有11个错误:
下载完之后把这些文件放入./opencv_contrib-4.4.0/modules/xfeatures2d/src
文件夹下。
3、解决了上面的错误,接着继续,勾选如下选项:
(1)勾选BUILD_opencv_world
(2)
- 勾选
OPENCV_DNN_CUDA
- 在
OPENCV_EXTRA_MODULES_PATH
中添加解压好的opencv_contrib-4.4.0中modules
路径
(3)勾选WITH_CUDA
,点击Configure
(4)第二次configure完成之后,此时需要更改gpu的算力值,更改CUDA_ARCH_BIN
,只留下一个值。然后勾选CUDA_FAST_MATH
,点击Configure
。
(5)等待Configure
完成之后,查看是否检测到了CUDA
和cuDNN
,都出现YES
之后,说明没有问题。如果没有检测到的话,需要确认是否CUDA
和cuDNN
版本是否正确,否则后面的编译将不会编译CUDA
模块。
再次确认:
点击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
文件夹。