CMake编译OpenCV CUDA安装及错误总结

在使用CMake编译OpenCV的CUDA时可能会出现一些问题,本文针对CMake-gui总结了部分问题并尝试解决。
本文给出的下载地址均为官方地址。

1. OpenCV CUDA 编译

  1. 安装CUDA Toolkit
    CUDA Toolkit下载地址
  2. 安装cuDNN (版本要求高于7.5)
    cuDNN下载地址
  3. 下载OpenCV源码和contrib包
    OpenCV源码下载地址
    contrib包下载地址(注意选则正确的版本
  4. CMake编译
    分享一个编译教程,编译的版本与你的可能不一致,但流程完整。
    win10编译opencv4.5.1+opencv_contrib+CUDA(带编译文件)

使用最新的CUDA ToolkitcuDNN,在VS编译时可能会失败,这里给出历史版本的下载地址:

2. CMake可能出现的问题

1) 找不到cuDNN

错误信息:

CMake Error at modules/dnn/CMakeLists.txt:53 (message):
  DNN: CUDA backend requires cuDNN.  Please resolve dependency or disable
  OPENCV_DNN_CUDA=OFF
Call Stack (most recent call first):
  modules/world/CMakeLists.txt:13 (include)
  modules/world/CMakeLists.txt:50 (include_one_module)

解决方法:

  • 首先确认CUDA ToolkitcuDNN是否正确安装。上文提到的编译教程中有检查方法。
  • 若正确安装则,勾选Advance选项,搜索cudnn,将CUDNN_LIBRARY项设置为cudnn.lib
    位置一般在C:\Program Files\NVIDIA\CUDNN\v9.0\lib\???\x64下。在这里插入图片描述

2) 找不到 Nvidia Video Codec SDK

错误信息:

CMake Warning at E:/opencv-4.9.0/opencv_contrib-4.x/opencv_contrib-4.x/modules/cudacodec/CMakeLists.txt:26 (message):
  cudacodec::VideoReader requires Nvidia Video Codec SDK.  Please resolve
  dependency or disable WITH_NVCUVID=OFF
Call Stack (most recent call first):
  modules/world/CMakeLists.txt:13 (include)
  modules/world/CMakeLists.txt:50 (include_one_module)

CMake Warning at E:/opencv-4.9.0/opencv_contrib-4.x/opencv_contrib-4.x/modules/cudacodec/CMakeLists.txt:30 (message):
  cudacodec::VideoWriter requires Nvidia Video Codec SDK.  Please resolve
  dependency or disable WITH_NVCUVENC=OFF
Call Stack (most recent call first):
  modules/world/CMakeLists.txt:13 (include)
  modules/world/CMakeLists.txt:50 (include_one_module)

解决方法:

  • 首选)此项为英伟达视频编解码库,若不需要可以在CMake中取消勾选WITH_NVCUVIDWITH_NVCUVENC解决。
  • 若需要安装,则需要下载Nvidia Video Codec SDK(下载地址)下载完成后解压,将LibInterface中所有文件分别复制到CUDA Toolkit文件夹下的libinclude中解决。

3)各种因为网络的错误

错误信息:

wechat_qrcode: Downloading detect.prototxt from https://raw.githubusercontent.com/WeChatCV/opencv_3rdparty/a8b69ccc738421293254aec5ddb38bd523503252/detect.prototxt
Try 1 failed

=======================================================================
  Couldn't connect to server from the Internet.
  Perhaps direct connections are not allowed in the current network.
  To use proxy please check/specify these environment variables:
 - http_proxy/https_proxy
 - and/or HTTP_PROXY/HTTPS_PROXY
=======================================================================

解决方法:

  • 当然是可以在CMake取消模块编译来解决。
  • 如果要安装该模块。首先,观察错误信息发现是wechat_qrcode模块出错,手动下载后面的链接:https://raw.githubusercontent.com/WeChatCV/opencv_3rdparty/a8b69ccc738421293254aec5ddb38bd523503252/detect.prototxt
    然后,进入源码文件夹里的.cache文件夹,里面存放各个模块所需下载的文件。
    在这里插入图片描述
    最后,将手动下载的文件放入对应文件夹并且按照文件夹内文件命名解决。
    可以参考CMake编译OpenCV4.0时opencv_ffmpeg.dll等下载失败的解决思路总结

题外话:好像没办法使用mingw编译支持多平台的OpenCV CUDA,有没有大佬解惑orz。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值