- 感谢
先感谢以下帖子,确实很有参考意义,但很多坑还是没总结到(我抓狂了)
从安装到编译保姆级帖子:https://blog.csdn.net/fengxinzioo/article/details/109402921
大神版核心步骤帖子(主要参考):https://blog.csdn.net/iracer/article/details/125360183
opencv官方论坛:https://forum.opencv.org/
写在前面
看本篇必先看(不然直接关掉网页,很关键!踩了太多坑了,哭了…
1. 版本问题
这里的版本详情如下:
NVIDIA CUDA:11.8 (与OpenCV版本互关联)
NVIDIA cuDNN:8.2.1 (关联CUDA版本)
NVIDIA GPU:GeForce RTX 3050 (这个在编译的时候要用,跟其他版本无关)
OpenCV:4.7.0 (与CUDA版本互关联)
Visual Stdio:community 2019 (2017-1019支持CUDA版本OpenCV)
CMake:3.27.1 (这个貌似不关键)
注意:千万注意cuda版本要和opencv版本配套,不知道怎么配套笔者提供一个思路:看两者的发布时间,一般cuda先发布,然后opencv会去适配他。然后cudnn和cuda要配套,这个在下载cudnn的时候就会提示。
2. 思路
授人以鱼不如授人以渔,编译的大体思路是这样的:
- 先看自己要用什么版本的cuda或者opencv;
- 然后去找其他组件的对应版本,用之前我提供的方法;
- vs版本最好使用2017~2019的,因为带cuda的opencv暂不支持其他版本(别问我怎么迟到的,在坑中泪目= =);
- 然后在cmake中多次编译,最后生成,再在vs中生成即可。
文章目录
- 写在前面
- 1. 版本问题
- 2. 思路
- 一、下载
- 二、编译
- 2.1 坑1
- 2.2 坑2
- 2.3 坑3
- 三、总结
一、下载
这里就是按照参考1的帖子,安装你的cuda和cudnn即可。然后下载opencv和opencv_contrib。还有CMake,VS下好就好了。这里没啥坑。
二、编译
坑主要在这里,我重点总结下。
首先,步骤就按照参考2的帖子来就好了,有一步OPENCV_ENABLE_NONFREF
这个打钩这个没拼对,应该是OPENCV_ENABLE_NONFREE
。
2.1 坑1
报错:Invalid character escape ‘\P’. Call Stack (most recent call first): cmake/OpenCVModule.cmake:385 (ocv_glob_modules)
解决方法:看下cmake配置的路径,是不是有反斜杠"",都改为正斜杠“/”即可。
2.2 坑2
报错:Could NOT find CUDNN (missing: CUDNN_LIBRARY CUDNN_INCLUDE_DIR) (Required is at least version “7.5”)
解决方法:
可能原因1:大多数应该是cmake配置里没有配置这个变量值,如此添加了你的cuda的lib路径即可:
其他的这类报错都一样,都在这里找,然后填lib路径。这个问题,我看很少人碰到,但我碰到了估计哪里操作有问题,第二次貌似就没这个问题了。
可能原因2:那就是cudnn真的版本不对了,那就换cudnn版本就好了,也可参考帖子1。
2.3 坑3
版本问题! opencv和vs的版本的坑都被我碰到了,来者需谨慎~
三、总结
这篇也基本是总结贴,也算把坑填上吧,太坑了太坑了,坑半下午了,希望后面的童鞋引以为戒~
Enjoy~