基于VS平台编译带Cuda的OpenCV(内含版本以及整套方案含泪总结)

  • 感谢

先感谢以下帖子,确实很有参考意义,但很多坑还是没总结到(我抓狂了)
从安装到编译保姆级帖子: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. 思路

授人以鱼不如授人以渔,编译的大体思路是这样的:

  1. 先看自己要用什么版本的cuda或者opencv;
  2. 然后去找其他组件的对应版本,用之前我提供的方法;
  3. vs版本最好使用2017~2019的,因为带cuda的opencv暂不支持其他版本(别问我怎么迟到的,在坑中泪目= =);
  4. 然后在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路径即可:
基于VS平台编译带Cuda的OpenCV(内含版本以及整套方案含泪总结)_第1张图片
其他的这类报错都一样,都在这里找,然后填lib路径。这个问题,我看很少人碰到,但我碰到了估计哪里操作有问题,第二次貌似就没这个问题了。

可能原因2:那就是cudnn真的版本不对了,那就换cudnn版本就好了,也可参考帖子1。

2.3 坑3

版本问题! opencv和vs的版本的坑都被我碰到了,来者需谨慎~

三、总结

这篇也基本是总结贴,也算把坑填上吧,太坑了太坑了,坑半下午了,希望后面的童鞋引以为戒~

Enjoy~

你可能感兴趣的:(深度学习,工程技术,opencv,人工智能,cuda,cudnn,win11)