环境: vs2019 + cuda 11.0 + cudnn 11.0
1. 安装cuda和对应的cudnn
cuda在nvidia官网上: CUDA Toolkit Archive | NVIDIA Developer
同理,cudnn在nvidia官网去找,cudnn要和cuda的版本对应上。
2. 下载opencv源码
opencv下载官网: https://opencv.org/releases/
或者github下载:https://github.com/opencv/opencv/archive/4.6.0.zip
important: 注意源码路径不要太长,不然nvcc生成cuda文件的时候,会报错!
3. 下载安装CMAKE
cmake这玩意你懂的。
4. 下载opencv_contrib
代码位置: https://github.com/opencv/opencv_contrib
如何使用参见里面readme.md,下面也会有介绍。
5. cmake-gui配置编译环境
设置cmake源码路径和build路径:
点击configure(第一次),生成配置
生成的配置里勾选:
build_cuda_stubs、WITH_CUDA、WITH_ONNX、opencv_dnn_cuda
根据自己需要,勾选BUILD_SHARED_LIBS(false生成静态库) 、build_opencv_world(将opencv的各个lib合并为opencv_world460.lib)
设置OPENCV_EXTRA_MODULES_PATH,即上面4里的opencv_contrib的代码,编译cuda需要Build_opencv_cudev选项。
这里只需要里面的cuda相关项和cudev,我拷贝的这几个放在单独的目录modules_for_use里使用
再次点击Configure,会有BUILD_opencv_cuda***相关选项(如BUILD_opencv_cudacodec)和BUILD_opencv_cudev.
这个时候等Configure完,Generate即可。
6. 使用vs打开并编译
Generate生成OpenCV.sln
使用VS打开OpenCV.sln。
选择ALL_BUILD编译代码。
编译完成后选择INSTALL安装。
7. 生成文件:
恭喜你生成文件
8. 验证cuda是否可用:
int count = cv::cuda::getCudaEnabledDeviceCount();
if (0 < count)
{
// do something
}