Win11下配置OpenCV with CUDA

这篇具有很好参考价值的文章主要介绍了Win11下配置OpenCV with CUDA。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前些天在B站上看到用OpenCV调用CUDA加速目标检测和关键点检测的教程,较Pytorch推理速度提升很明显,最近整了个RTX4070,所以就也想来试一试。由于刚换了电脑,没有相关环境,配置过程中踩了一些坑,因此有了这篇记录文章。

基本配置

  1. 系统:Windows11-22H2
  2. 显卡:RTX4070
  3. 驱动:CUDA-11.8,cudnn-windows-x86_64-8.9.2.26
  4. 编译软件:CMake, Visual Studio 2019
  5. 版本:OpenCV 4.7.0,Contrib 4.7.0

前置条件

安装Visual Studio2019,CMake,CUDA以及cuDNN

  1. Visual Studio下载地址
  2. CMake下载链接
  3. CUDA下载链接
  4. cuDNN下载链接
    VS和CMake安装很简单,就跟普通的软件一样,CUDA和cuDNN的下载和安装可以参考之前的这篇文章

下载和修改OpenCV

下载

地址

  1. OpenCV
  2. contrib包

需要注意,下载的OpenCV主包和Contrib包的版本要一致才可以,我用的是4.7.0版本

下载好后,将这两个包解压至同一目录下,方便查找。同时,为了存放编译生成的支持CUDA的OpenCV库,需要创建一个新的文件夹,这里我在同一目录下创建了一个名为opencv_cuda_build的文件夹,具体如图1所示

Win11下配置OpenCV with CUDA
由于下载下来的OpenCV编译好的包没有CUDA以及contrib包中的相关支持,所以需要源代码编译,生成支持Contrib和CUDA的定制的OpenCV库。从下载的OpenCV源代码到我们加速推理所需要的库文件之间需要经过以下步骤:

  1. 使用CMake配置OpenCV源代码的工程,生成VS编译所需的工程文件
  2. 利用VS将源代码编译成相应的库文件
  3. 将编译生成的OpenCV库文件配置到VS中,方可在VS工程中链接到我们自己编译的库

修改配置

由于某些客观原因,编译OpenCV以及contrib所需的某些库在国内无法下载,因此需要对下载下来的代码配置进行一些修改方可避免缺少某些库导致编译失败。

具体来说,主要是OpenCV的ffmpeg,ippicv和contrib的face,xfeatures2d这几个库。

解决方法就是,修改这几个库的下载地址,在原来的下载地址前增加代理。
例如,在ippicv的ippicv.cmake文件中的原始下载地址

https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/

前面新增一个代理地址

https://ghproxy.com/

修改成这样即可

https://ghproxy.com/https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/

如图2所示
Win11下配置OpenCV with CUDA
以此类推,ffmpeg的配置文件是opencv\sources\3rdparty\ffmpeg\ffmpeg.cmake,xfeatures2d配置文件是opencv_contrib-4.7.0\opencv_contrib-4.7.0\modules\xfeatures2d\cmake**目录下的download_boostdesc.cmakedownload_vgg.cmake**,face的配置文件是F:\packages\opencv_contrib-4.7.0\opencv_contrib-4.7.0\modules\face\CMakeLists

编译OpenCV

前期工作准备完毕,开始编译我们所需的OpenCV。

1.利用CMake配置OpenCV源代码工程

  • 打开CMake软件,Where is the source code这一栏选择我们解压的OpenCV的源代码的路径,我这里是F:/packages/opencv/sources。Where to build the binaries这一栏选择我们创建的opencv_cuda_build文件夹。然后点击Configure进行第一次Configure,在弹出的对话框中选择VS 2019和x64,之后点击finish。
    Win11下配置OpenCV with CUDA
    执行完成后界面如下图所示:
    Win11下配置OpenCV with CUDA

  • 接下来在CMake搜索框搜索CUDA,勾选弹出的CUDA选项
    Win11下配置OpenCV with CUDA

  • 搜索并勾选math相关
    Win11下配置OpenCV with CUDA

  • 搜索并勾选NONFREE
    Win11下配置OpenCV with CUDA

  • 搜索并勾选BUILD_opencv_world
    Win11下配置OpenCV with CUDA

  • 搜索GENERATE_SETUPVARS,取消勾选
    Win11下配置OpenCV with CUDA

  • 最后搜索MODULES并添加contrib包的路径
    Win11下配置OpenCV with CUDA
    至此,完成这一步的配置选择,第二次点击configure,等待配置完成,如下图:
    Win11下配置OpenCV with CUDA

  • configure完成后,搜索CUDA_ARCH_BIN,根据自己的GPU算力选择保留对应的数值。具体GPU对应的数值可以从Nvidia官网查找。由于40系显卡的计算能力是8.9,而4.7版本的OpenCV支持的最大的计算能力是8.6,所以我这里选择的是8.6

Win11下配置OpenCV with CUDA
接下来第三次点击configure,等待完成后点击generate如下图所示:
Win11下配置OpenCV with CUDA
然后就可以点击Open Project打开Visual Studio 2019,至此,CMake完成使命

2.Visual Studio 2019 编译OpenCV源代码

  • 打开VS工程后,选择Release x64版本,并在解决方案管理器中的CMakeTargets目录下右键点击ALL_BUILD,选择生成,开始编译。(这一过程需要挺久的,13600K编译大概50分钟左右)

Win11下配置OpenCV with CUDA

  • ALL_BUILD编译完成之后,再选择INSTALL,同样右键执行生成操作
    Win11下配置OpenCV with CUDA
    这一步执行完成之后,会在opencv_cuda_build/文件夹下生成install文件夹:
    Win11下配置OpenCV with CUDA
    生成的install文件夹下的文件就是我们需要的文件,至此,OpenCV编译完成!

配置 Visual Studio 2019

编译完OpenCV后,需要对VS进行一些配置才能在我们的项目中引用到我们编译的OpenCV库。具体来说主要有

  1. 添加包含目录
  2. 添加库目录
  3. 添加附加依赖项
  4. 添加环境变量
  • 首先,我们创建一个空白的VS C++工程并添加源文件main.cpp,然后选择Release x64,在右边的属性管理器的Release | x64处右键->属性,在弹出来的属性页面的VC++目录选项的包含目录下添加这两个include路径:
F:\packages\opencv_cuda_build\install\include
F:\packages\opencv_cuda_build\install\include\opencv2

Win11下配置OpenCV with CUDA
Win11下配置OpenCV with CUDA

  • 然后在下面的库目录中添加lib路径:
F:\packages\opencv_cuda_build\install\x64\vc16\lib

Win11下配置OpenCV with CUDA

  • 最后在链接器->输入->附加依赖项选项中添加opencv_cuda_build\install\x64\vc16\lib文件夹下的所有lib文件名,我这里只有opencv_img_hash470.lib和opencv_world470.lib这两个。
    Win11下配置OpenCV with CUDA
  • 最后需要将编译的二进制文件路径添加到环境变量中,在系统搜索栏中搜索编辑环境变量,在Path这一栏中添加bin路径:
F:\packages\opencv_cuda_build\install\x64\vc16\bin

Win11下配置OpenCV with CUDA

至此,VS配置完成,可以在VS中调用我们刚刚编译的支持CUDA的OpenCV了。

测试程序

在刚刚创建的main.cpp中添加如下示例程序:

#include <opencv2/opencv.hpp>
#include <opencv2/core.hpp>
#include <opencv2/cudaarithm.hpp>
#include <iostream>

using namespace std;
using namespace cv;
using namespace cv::cuda;

int main()
{
    // OpenCV版本号
    cout << "OpenCV_Version: " << CV_VERSION << endl;
    // CUDA
    int num_devices = getCudaEnabledDeviceCount();
    if (num_devices)
        cout << "CUDA is available, num_devices:" << num_devices << endl;
    else
        cout << "CUDA is not available." << endl;
    //读取图片
    Mat img = imread("D:/CUDA_ARCH_BIN.png");

    imshow("picture", img);
    waitKey(0);
    return 0;
}

如果能正确显示图片以及CUDA,表明安装成功!
Win11下配置OpenCV with CUDA文章来源地址https://www.toymoban.com/news/detail-499771.html

参考教程

  1. 解决ippicv等下载问题
  2. OpenCV安装教程
  3. 之前的安装文章

到了这里,关于Win11下配置OpenCV with CUDA的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • StableDiffusion在Win11的配置

    按照这篇博客安装: 了解AI作画从零开始,stable diffusion环境配置篇 可能出现的问题:. 安装stable-diffusion时gfpgan安装失败 缺少clip或clip安装不上的解决方案(windows下的操作)

    2024年02月12日
    浏览(21)
  • Win11 安装 Docker及配置

    Docker: Accelerated, Containerized Application Development https://www.docker.com/ 无脑安装,超简单。 问题描述: Docker Desktop requires a newer WSL kernel version. 问题截图: 问题原因: WSL不是最新版。 解决方案: 适用于 Linux 的 Windows 子系统 (WSL) 可让开发人员直接在 Windows 上按原样运行 GNU/Linux 环

    2024年02月16日
    浏览(35)
  • 模型实战(11)之win10下Opencv+CUDA部署yolov5、yolov8算法

    测试环境:AMDRH7000+RTX3050+win10+vs2-10+opencv455+cuda11.7 关于opencv470+contrib+cuda的编译,可以详见:Win10下Opencv+CUDA联合编译详细教程 本文代码同时支持 yolov5 、 yolov8 两个模型,详细过程将在文中给出, 完整代码仓库最后给出 其中,yolov8在opencv-DNN + CUDA下的效果如下: 新建VS项目,名

    2024年02月16日
    浏览(40)
  • Tomcat10安装及配置教程win11

    Tomcat下载链接 Tomcat官网 Tomcat官网地址 https://tomcat.apache.org/ Tomcat的版本列表 点击上图中左侧红框内**Which version?**即可得下图 下载Tomcat 点击上图中左侧红框内 红框内tomcat版本 即可得下图,下载zip包 解压zip包放到个人准备安装的目录即可 测试 windows+R—cmd 输入startup,报如下图

    2024年04月15日
    浏览(48)
  • VScode配置Python虚拟环境(Win11)

            这里选用基于Anaconda的解释器,Anaconda是Python的发行版,包含解释器以及一系列库,以及软件包管理器Conda。         在“清华大学开源镜像站”下载Anaconda。(网站:mirrors.tuna.tsinghua.edu.cn)。           点击Archive ,找到发行时间较近的Anaconda3版本。    

    2024年02月02日
    浏览(42)
  • win11系统如何配置内网ip

    第一步:在键盘上按win+R键打开运行   输入control  出现下面的页面  第二步:点击网络和internet,出现下面的页面  第三步:点击网络和共享中心,进入下面的页面,在页面的左侧找到更改适配器设置 第四步:点击进入,会弹出来你的网卡图标,右击选择属性,打开属性窗

    2024年02月15日
    浏览(22)
  • Win10/Win11日历提醒与手机日历同步互联+自带邮件收发配置

    说明 日历同步 所需工具:此处以 QQ 邮箱为例,在 Windows 日历与小米手机日历之间相互同步提醒事件; 效果:在一端编辑提醒事件后,其他所绑定的平台都会自动同步,其他手机理论通; 延迟:自动同步有时间间隔,也就几分钟而已,若想获取最新事件可点击手动同步; 同

    2024年02月09日
    浏览(122)
  • node.js安装及配置教程(win11)

    官网下载:点击下载 根据自己电脑的位数选择对应的版本即可 网盘下载:点击下载 下载完成后,双击运行程序,点击next 勾选接受协议,点击next 选择自己的安装路径,然后点击next 默认选项即可,直接点击next 不勾选自动安装工具,直接next 点击install开始安装 等待安装完成

    2024年02月10日
    浏览(40)
  • 【adb】--- win11 配置 adb环境 超详细

    在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。 而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 开发环境:windows11 adb官网下载 选择Windows版本 确认下载 下载下来的压缩

    2024年02月05日
    浏览(37)
  • 最新win11配置cuda以及cudnn补丁教程

    1、首先使用指令 nvidia-smi 查看电脑支持的** 最高cuda **版本,例如: 本机 12.2 2、进入CUDA下载cuda安装包 https://developer.nvidia.com/cuda-toolkit-archive 2、点击 上方绿色的链接 ,按照图中序号选择的即可,最后点击下载。 **安装时候展开CUDA,后取消勾选图中内容之后,一直next即可*

    2024年04月22日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包