【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

这篇具有很好参考价值的文章主要介绍了【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
  • 1. 环境准备
    • 1.1 软件环境
    • 1. 2 源码下载
  • 2. CMake编译项目
    • 2.1 创建cmake项目
    • 2.2 设置编译配置
    • 2.3 解决异常
      • 2.3.1 文件下载异常
      • 2.3.2 解决CUDA版本异常
    • 2.4 编译项目
  • 3. Visual Studio 编译项目
  • 4. 项目测试
  • 5. 总结

  OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。项目源码由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

  但在实际使用中,如果是对处理时间要求比较高的场景,使用OpenCV处理图片数据很难满足要求,不过OpenCV支持使用CUDA进行加速,不过支持CUDA加速的依赖包需要我们自行编译才可使用,因此在本次文章中,我们将演示如何使用OpenCV源码自行编译代码文件,来实现CUDA加速。

1. 环境准备

1.1 软件环境

  本次编译平台使用的是 Windows 11 系统,使用CMake-gui + VS2022进行源码编译,为了大家更好的复现该项目,此处罗列一下本文所使用的环境:

  • CUDA: 12.2, cudnn: 8.9.3
  • Cmake: 3.28.0
  • Visual Studio 2022

关于以上环境的安装,大家可以查看网上相关文档自行安装即可。

1. 2 源码下载

  接下来需要下载OpenCV源码,此处需要下载两个源码,分别是opencvopencv_contrib。下载链接为

opencv:
https://github.com/opencv/opencv/archive/4.8.0.zip
opencv_contrib:
https://github.com/opencv/opencv_contrib/tags

  不过在下载时要注意一点,就是要保证opencvopencv_contrib下载的版本要一致,此处我们下载的版本为:4.8.0。下载完成后,将两个文件解压到同一个文件夹中,如下图所示。
【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

2. CMake编译项目

2.1 创建cmake项目

  打开CMake软件,设置项目源码路径,并在源码路径下创建一个build文件夹,并设置编译文件夹,如下图所示:

【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

  接下来点击Configure,进行第一次配置,然后回弹出编译平台选择,此处根据自己电脑的编译软件进行选择,在本文中我们使用的是Visual Studio 2022,然后选择编译平台为x64

【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

  第一次配置生成后,输出如下所示:

【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

2.2 设置编译配置

  首先添加opencv_contrib模块的引用,在OPENCV_EXTRA_MODULES_PATH条目中添加该模块的路径,然后选择OPENCV_ENABLE_NONFREE,如下图所示:

【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

  接下来添加CUDA的设置,首先选择WITH_CUDA,如下图所示:

【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

  然后选择OPENCV_DNN_CUDA,此处还可以选择OPENCV_DNN_OPENVINO等不同的模型部署,如下图所示:

【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

  最后选择ENABLE_FAST_MATH

【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

  此处为了让生成的依赖库文件都集成在一个文件中,方便后面使用,所以此处可以选择BUILD_opencv_world,如果不选择,生成的 文件将会被拆散成多个文件。

【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

  第二次Configure后,下一步就是需要检查一下其过程是否有异常抛出

【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

2.3 解决异常

2.3.1 文件下载异常

  首先查看一下配置输出框是否抛出警告,如果有的话,一定要解决一下,不然后续编译会出错。

【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

  当出现上图所示的异常后,就需要手动解决一下该问题,首先找到build\CMakeDownloadLog.txt文件,然后打开后,查看一下是否有下图所示的文件确实异常。如果有,请自行下载,下载链接如下图所示标注位置,下载后将文件放置在下图所示缺失文件路径,并按照要求修改名称。

【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

2.3.2 解决CUDA版本异常

  该异常会在最后编译过程中出现,主要是当CUDA>=12.2时会出现该问题,因此需要检查一下自己的CUDA版本是否大于12.2.查看CUDA版本方式如下图所示。

【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

  如果你的CUDA版本大于12.2,就要根据官方的要求进行修改,官方提供的解决方式链接为:cuda: fix for compatibility with CUDA Toolkit >= 12.2.0 by cudawarped · Pull Request #24104 · opencv/opencv (github.com)。

其主要修改内容如下图所示。

【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

2.4 编译项目

  解决完上述异常后,就可以进行项目编译了,点击Generate,就可以自动生成项目了。

【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

3. Visual Studio 编译项目

  首先我们打开build\文件夹,可以看到生成的OpenCV.sln解决方案文件,使用Visual Studio打开该项目。

【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

  然后运行ALL_BUILD项目即可,此处运行时间会比较长,尤其是再加入CUDA支持后,编译时间会更久。

【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

  编译完成后,可以获得下面文件夹内容,此处主要是两个有用的文件夹,一个是install文件夹,这个文件夹主要是包含的时项目运行的依赖项,包括include/文件夹以及 .lib.dll等文件;第二个是python_loader文件夹,主要是python运行所需的依赖项。

【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

4. 项目测试

  项目编译完成后,最后我们查看一下项目是否编译成功,此处使用cv2.cuda.getCudaEnabledDeviceCount()接口方法检查一下是否存在在线的CUDA设备,如果存在CUDA设备,将返回设备数量,如果没有,将返回0。如下图所示,在运行后,输出为1,本机设备只存在一个显卡,所以索命该项目已经编译好了。

【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)

5. 总结

  在本文中,我们实现了OpenCV源码编译,并结合本机安装的CUDA版本,实现了CUDA版本的OpenCV编译,并实现了Python API 以及C++ API 的使用。后续我们将会结合所编译的库进行项目开发以及与普通版本进行对比。文章来源地址https://www.toymoban.com/news/detail-771522.html

到了这里,关于【OpenCV】 OpenCV 源码编译并实现 CUDA 加速 (Windows)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • windows11编译OpenCV4.5.0 with CUDA(附注意事项)

    从OpenCV4.2.0 版本开始允许使用 Nvidia GPU 来加速推理。本文介绍最近使用windows11系统编译带CUDA的OpenCV4.5.0的过程。 文中使用【 特别注意 :…】为大家标识出容易出错的地方。 安装成功后,使用CPU与GPU调用yolov4模型进行推理的耗时测试结果: GPU CPU 4ms 311ms 从差距上看,还是值

    2024年02月12日
    浏览(49)
  • 在windows环境下安装支持CUDA的opencv-python

    GPU(图形处理器,Graphics Processing Unit) 是一种专门设计 用于图形渲染和并行计算的硬件设备 。传统上,GPU 主要用于图形渲染,即将 3D 数据转换为 2D 图像,以显示在计算机屏幕上。然而,由于 GPU 在并行计算方面的强大能力,逐渐引起了开发者的关注,并开始将 GPU 应用于通

    2024年02月08日
    浏览(30)
  • Windows11+Opencv+Clion编译源码

    参考:https://www.robotsfan.com/posts/69395e08.html 注意事项 编译过程中使用的软件,开源码等所有工具的安装路径一定不要有中文和空格。 cmake过程会下载一些文件,如果是局域网的话可能下载不下来,可以事先下载好拷贝到相应目录。 OpenCV默认会编译很多功能,有些功能需要先自

    2024年02月14日
    浏览(30)
  • 在Windows平台编译OpenCV及开发环境配置

    工欲善其事,“必先有其器”。 以下是需要用到的软件和工具清单 表一 软件 用途 下载地址 版本 VS(Visual Studio) 开发和编译(打工人) https://visualstudio.microsoft.com/zh-hans/downloads/ 社区版就够用,版本选择详见表二 CMake 高效编译和组织代码(中介) https://cmake.org/download/ 版本选

    2024年01月21日
    浏览(29)
  • Windows环境利用QT+CMake编译mingw版本的opencv

    Opencv官网没有提供mingw版本的opencv库,所以需要自己编译,下面是编译过程,32位64位方法类似。 可以直接下载编译好的mingw版本opencv4.4: 使用CMAKE3.22+QT5.13编译后的opencv4.4(32位的)资源-CSDN文库 如果网络不好,可能会需要自己手动下载下面的文件:  opencv_videoio_ffmpeg.dll+ope

    2024年02月13日
    浏览(33)
  • Jetson OpenCV 安装,支持cuda加速,已解决多个常见问题

    1 :本文主要介绍 Jetson Xavier NX (以下简称 NX ) 平台下 OpenCV 的卸载及编译安装带 CUDA 加速的OpenCV 2 :并提出解决依赖项无法安装的问题 为什么要卸载默认的 OpenCV ? 输入命令 按数字6查看INFO页面,可以看到 所以默认的 OpenCV 版本是不带 CUDA 加速的,无法充分利用 NX 的 GPU 性能

    2024年01月19日
    浏览(37)
  • Nvidia Jetson TX2 配置Cuda 加速的Opencv

    “其他流程网上都有但是要找到适合自己的且没有报错的有点艰难” 首先做好心理准备,用Cmake进行编译的话,每次流程基本上都是2h左右,所以我选择用网线VNC直连后,挂后台处理。 1.安装Jetson的jtop监控器 2.准备Cmake-gui可视化安装程序(因为之前用代码的话路径容易写错,

    2024年02月16日
    浏览(27)
  • Windows环境下C++ 安装OpenSSL库 源码编译及使用(VS2019)

    参考文章 https://blog.csdn.net/xray2/article/details/120497146 之所以多此一举自己写多一篇文章,主要是因为原文内容还是不够详细。而且我安装的时候碰到额外的问题。 一般情况下,引入别人的库,要么把代码直接搞进去,一起编译。要么引入库和头文件(就像MYSQL那样),都不复杂

    2024年02月14日
    浏览(26)
  • 胎儿式保姆级教程:Jetson Xavier NX镜像烧录、开机配置、中文配置、风扇设置、远程桌面、文件传输配置、pycharm安装环境配置,QQ,opencv(cuda编译),torch(GPU).

    一、使用的硬件:nx板子、原装充电器、有线鼠标(USB)、有线键盘(USB)、有线摄像头(USB)、7寸触摸显示屏、20寸大显示屏(显示屏有一个就可以,大屏幕更加方便)、SD卡(128G,用64g也可以)、读卡器、笔记本电脑(Win-11)、WIFI网络环境 二、软件:SDFormatter(v4)、Win32DiskImager(2.0)、VNC-

    2024年02月07日
    浏览(38)
  • OpenCV + CLion在windows环境下使用CMake编译, 出现Mutex相关的错误的解决办法

    最近在windows下面用cmake编译OpenCV的项目代码,但是一直碰到找不到mutex的问题,百思不得其解, 查看stackoverfow里面有提到,mingw64有个POSIX的东西,觉得可以一试,就到github上重新下载mingw64 Releases · niXman/mingw-builds-binaries · GitHub  选择x86_64-12.2.0-release-posix-seh-ucrt-rt_v10-rev2.7z版本,重

    2024年02月11日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包