VS2019编译Opencv4.6.0GPU版本(支持40系显卡)
1 准备工具
- CMake
- CUDA Toolkit + CUDNN
- VIstual Studio 2019
- OpenCV + OpenCV_contrib
点击上面链接跳转,我使用的是CMake3.24,CUDA11.1,CUDNN8.0.5,已上传至百度网盘。
链接:https://pan.baidu.com/s/1NqyHujPUkk8j3LdqH22sGw
提取码:u2it
2. 编译流程
2.1 CUDA
安装CUDA和对应的CUDNN,并配置环境变量。
网址:https://docs.nvidia.com/deeplearning/tensorrt/archives/tensorrt-853/support-matrix/index.html
40系显卡需要cuda11.8以上,不然会编译报错:找不到opencv_world460.lib!
我的显卡4070,cuda11.8,cudnn8.6.0。
2.2 CMake
2.2.1 解压OpenCV和OpenCV_contrib,打开CMake-gui设置source和build(新建)路径,点击Configure。
第一次Configure出现报错,PPICV和FFMPEG下载失败
以PPICV为例,在目标路径下找到CMakeDownloadLog.txt,其中关于IPPICV的信息如下
打开https://ghproxy.com/,输入网址,下载ippicv_2020_win_intel64_20191018_general.zip
找到放置zip的路径D:\tool\opencv-4.6.0\.cache\ippicv,替换其中的zip
2.2.2 再次Configure,在新生成的选项中,勾选/取消勾选相关内容:
1. 勾选WITH_TBB
2. 勾选CUDA相关
3. 取消选择 java 的编译选项(个人不需要)
4. 勾选nonfree
5. 取消勾选TEST,加速编译
6. 勾选 BUILD_opencv_world 最终只生成一个动态链接库方便使用
7. 在 OPENCV_EXTRA_MODULES_PATH 中填入 OpenCV_contrib 解压文件夹 modules 的路径
8. 取消选择 OPENCV_GENERATE_SETUPVARS
2.2.3 再次Configure,xfeatures和face报错,因为用不到,我取消了勾选。选择显卡算力,10系卡为6.1,20系卡为7.5,30系卡为8.6,40系卡为8.9。
2.2.4 再次Configure,确保没有红色报错,然后点Generate。
2.3 VS2019
打开生成的 OpenCV.sln 文件,找到项目 INSTALL 右击生成。大概1个半小时后
最终会在当前 build 目录下生成一个 install 目录,这就是我们需要的可执行文件和库,最后添加到环境变量中测试效果。
3 使用
3.1 属性页设置
3.2 拷贝opencv_world460.dll到release下
3.3 开启cuda加速
#include <opencv2/dnn.hpp> using namespace dnn; ... this->net.setPreferableBackend(DNN_BACKEND_CUDA); this->net.setPreferableTarget(DNN_TARGET_CUDA);
yolov5推理时间减少一半。
参考: