因项目需要,需要编译一个带cuda版本opencv的库,碰到的问题如下汇总:
- 驱动安装
我的设备时NVIDIA GeForce RTX 4060Ti
官网选择显卡驱动https://www.nvidia.cn/drivers/lookup/
我这边安装的时560.94版本
安装之后:
- cuda安装
安装cuda:是一个由NVIDIA开发的并行计算平台和编程模型
cuda版本获取:https://developer.nvidia.com/cuda-toolkit-archive
应为我的是12.6.65的设备,所以选择cuda_12.6.0_560.76_windows.exe的cuda安装
- cuDnn安装
安装cudDnn:cuDNN是一个GPU加速的深度学习库
下载地址:https://developer.nvidia.com/rdp/cudnn-archive
选择for cuda 12.x的,应为我的cuda版本就是12.6
这里我一开始选择的是for cuda11.x,后面再程序运行的时候会出现一个问题,一直找不到cublasLt64_11.dll,cublas64_11.dll这两个文件
很奇怪为什么我使用的是cuda12需要找11,原来是这里使用了for cuda11的dudnn,解决方案就是把cublasLt64_12.dll,cublas64_12.dll 复制一份出来改为 cublasLt64_11.dll,cublas64_11.dll 就可以解决。当然最好使用for cuda12.x
cudnn-windows-x86_64-8.9.0.131_cuda11-archive下载的文件
下载完成后,是一个文件夹,将文件夹下的全部复制到这个路径下
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.6
- opecv4.10编译
opencv源码+contrib下载4.10版本
参考这个链接编译,我碰到的问题是一开始使用opencv4.8编译的,结果使用vs编译的时候一直报错误,Error: no instance of overloaded function “cv::cudev::blockReduce” matches the argument list
以为是配置问题各种找原因之后才发向是版本问题
编译过程参考https://blog.csdn.net/m0_58326153/article/details/142333462
编译遇到的问题:
vs编译OpenCV 4.7.0 无法解析的外部符号 cv::xfeatures2d::VGG::getDefaultName
解决方法参考
https://blog.csdn.net/chan1987818/article/details/129991937?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6-129991937-blog-129850364.235%5Ev43%5Econtrol&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6-129991937-blog-129850364.235%5Ev43%5Econtrol&utm_relevant_index=10