【opencv4.8.1 源码编译】windows10 OpenCV 4.8.1源码编译并实现 CUDA 12加速

news2024/11/20 6:34:55

Windows 下使用 CMake3.29.2 + Visual Studio 2022 编译 OpenCV 4.8.1 及其扩展模块+cuda12.0+teslaT4显卡
记录自己在编译时踩过的坑,避免下次再犯或者给有需要的人。
在实际使用中,如果是对处理时间要求比较高的场景,使用OpenCV处理图片数据很难满足要求,不过OpenCV支持使用CUDA进行加速,不过支持CUDA加速的依赖包需要我们自行编译才可使用,因此在本次文章中,我们将演示如何使用OpenCV源码自行编译代码文件,来实现CUDA加速。感兴趣的小伙伴,请认真向下看哦。收藏关注我哦。
Visual Studio 2022 社区版本下载安装 https://visualstudio.microsoft.com/zh-hans/vs/ 假设你已经安装了,这里跳过安装步骤。进入opencv 安装环节

1、下载opencv 源码
第一步: 接下来需要下载OpenCV源码,此处需要下载两个源码,分别是opencv和opencv_contrib。下载链接为

由于我电脑pip install opencv-python 版本 4.8.1 ,为了一致性,我这里下载源码4.8.1 版本。

https://github.com/opencv/opencv/releases/tag/4.8.1
https://github.com/opencv/opencv_contrib/tags

下载完成之后,解压,会生成两个文件夹。
在这里插入图片描述

下一步我们下载cmake 工具。下载地址:

https://cmake.org/download/

最新版本为3.29.2: 选择 cmake-3.29.2-windows-x86_64.msi 进行下载安装
在这里插入图片描述
2. CMake编译项目
2.1 创建cmake项目
  打开CMake软件,设置项目源码路径,并在源码路径下创建一个build文件夹,并设置编译文件夹,如下图所示:
在这里插入图片描述
接下来点击Configure,进行第一次配置,然后回弹出编译平台选择,此处根据自己电脑的编译软件进行选择,在本文中我们使用的是Visual Studio 2022,然后选择编译平台为x64。
在这里插入图片描述
第一次配置生成后,输出如下所示:
在这里插入图片描述
2.2 设置编译配置
  首先添加opencv_contrib模块的引用,在OPENCV_EXTRA_MODULES_PATH条目中添加该模块的路径,然后选择OPENCV_ENABLE_NONFREE,如下图所示:
在这里插入图片描述
接下来添加CUDA的设置,首先选择WITH_CUDA,如下图所示:
勾上就行在这里插入图片描述
然后选择OPENCV_DNN_CUDA,此处还可以选择OPENCV_DNN_OPENVINO等不同的模型部署,如下图所示:
这两个再勾上
在这里插入图片描述

在这里插入图片描述
三个cuda 都勾上

最后选择ENABLE_FAST_MATH.勾上
在这里插入图片描述
此处为了让生成的依赖库文件都集成在一个文件中,方便后面使用,所以此处可以选择BUILD_opencv_world,如果不选择,生成的 文件将会被拆散成多个文件。
再次勾上 就对了
在这里插入图片描述
搜索 non 也勾上这个
在这里插入图片描述
在这里插入图片描述

将CUDA_ARCH_BIN显卡算力内容改成自己显卡的算力,删除小于自己显卡算力的部分,
官方网站查看算力

在这里插入图片描述

第二次Configure后,下一步就是需要检查一下其过程是否有异常抛出
在这里插入图片描述
首先查看一下配置输出框是否抛出警告,如果有的话,一定要解决一下,不然后续编译会出错。
在这里插入图片描述

2.3 解决异常
2.3.1 文件下载异常
首先呢,就是ffmpeg 这个下载异常,这个从官网下载

在这里插入图片描述
在这里插入图片描述

点击zip 版本。解压文件夹,下载后进行解压到指定文件夹下。并添加 bin 目录 到path 目录。再次验证

ffmpeg -version

在这里插入图片描述
安装ffmpeg 成功。

此时,最好看一下 CMake 的下载日志,下面的文件是 CMake 的下载日志。下载很多地方报错的,这如何是好,别着急,我们通过修改,
让它能够下载。
我主要是修改这几个地方:

a. 进入 C:/opencv-4.8.1/opencv-4.8.1/3rdparty/ippicv 目录 将 ippicv.cmake 的 https://raw.githubusercontent.com 修改为:https://raw.staticdn.net

b. 进入 C:/opencv-4.8.1/opencv-4.8.1/3rdparty/fmpeg 目录 将 ffmpeg.cmake 的 https://raw.githubusercontent.com 修改为:https://raw.staticdn.net

c. 进入 C:/opencv_contrib-4.8.1/opencv_contrib-4.8.1/modules/xfeatures2d/cmake 目录 将 download_boostdesc.cmake 中的https://raw.githubusercontent.com 修改为:https://raw.staticdn.net

d. 进入 C:/opencv_contrib-4.8.1/opencv_contrib-4.8.1/modules/xfeatures2d/cmake 目录 将 download_vgg.cmake 中的 https://raw.githubusercontent.com 修改为:https://raw.staticdn.net

e. 进入 C:/opencv_contrib-4.8.1/opencv_contrib-4.8.1/modules/face 目录 修改 CMakeLists.txt, 将https://raw.githubusercontent.com 修改为:https://raw.staticdn.net

在这里插入图片描述
有了这个加持,之后再重新"Configure"即可。

在这里插入图片描述
最后只剩下这两个错误了,
在CMakeList.txt 文件中增加一行:

if(POLICY CMP0148)
  cmake_policy(SET CMP0148 OLD)  # CMake 3.13+: option() honors normal variables.
endif()

if(POLICY CMP0146)
  cmake_policy(SET CMP0146 OLD)  # CMake 3.13+: option() honors normal variables.
endif()

再次Configure,最后没有一个红色错误了,说明这一步成功了,接下来,点击"Generate"生成使用 CMake 构建的项目

在这里插入图片描述

3、接下来,点击"Generate"生成使用 CMake 构建的项目

在这里插入图片描述
最后点击"Open Project",唤起 Visual Studio 2022 打开该项目。当然也可以去输出编译的二进制文件的目录(C:/opencv-4.8.1/newbuild) ,打开 OpenCV.sln 文件达到同样的效果。
在这里插入图片描述

使用VS2019 (以管理员方式运行) 打开刚刚编译工程OpenCV.sln,在release|x64模式下,在解决方案资源管理器—>CMakeTargets—>右键点击ALL_BUILD–>生成。

INSTALL 生成成功后,这次编译算是大功告成了。我们完成了OpenCV4.8.1 及其扩展模块的编译。

们可以在输出编译的二进制文件的目录(E:/software/opencv-4.8.1/build)下找到 install 文件夹

linux

git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
cd opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D INSTALL_C_EXAMPLES=ON \
      -D INSTALL_PYTHON_EXAMPLES=ON \
      -D OPENCV_GENERATE_PKGCONFIG=ON \
      -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \
      -D WITH_CUDA=ON \
      -D WITH_CUDNN=ON \
      -D CUDA_ARCH_BIN=7.5 \
      -D CUDA_ARCH_PTX=7.5 \
      -D WITH_TBB=ON \
      -D WITH_GDAL=ON \
      -D WITH_XINE=ON \
      -D BUILD_EXAMPLES=ON ..
make -j$(nproc)
sudo make install
sudo ldconfig

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1636621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

虚拟机安装与配置win7

一、安装镜像 Windows7 64位 ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/ 建议迅雷下载 二、VMware 安装win7 1.新创自定义虚拟机 2.默认即可 3.iso文件我们自己下载,选择一个空的磁盘 4.…

Java 使用 Maven 编译时插件提示 拷贝错误

提示的具体信息为: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.3.1:resources (default-resources) on project core-java-8: filtering C:\WorkDir\Repository\iSharkfly-Docs\java-tutorials\core-java-modules\core-jav…

《架构风清扬-Java面试系列第25讲》聊聊ArrayBlockingQueue的特点及使用场景

ArrayBlockingQueue是BlockingQueue接口的一个实现类之一 这个属于基础性问题,老规矩,我们将从使用场景和代码示例来进行讲解 来,思考片刻,给出你的答案 1,使用场景 实现:基于数组实现的有界阻塞队列&…

【Web UI自动化】Python+Selenium 环境配置

安装Python 官网地址:https://www.python.org/,Downloads菜单下选择适合自己的系统版本,我的是Windows。 点击进入以后,可以看到当前最新版本。 点击上面的链接,页面下滑,找到下载链接,根据…

解锁 LLM 新高度,拓宽模型新边界 —— OpenVINO™ 2024.1 赋能生成式 AI 高效运行...

点击蓝字 关注我们,让开发变得更有趣 作者 | 武卓博士 英特尔 OpenVINO™ 布道师 排版 | 李擎 Hello, OpenVINO™ 2024.1 欢迎来到 OpenVINO™ 2024.1! OpenVINO™ 工具套件的每一次升级,都意味着我们在 AI 推理与部署的前沿领域迈出了新的步伐&#x…

【算法刷题 | 动态规划01】5.01(动态规划理论基础、斐波那契数、爬楼梯、使用最小花费爬楼梯)

文章目录 1.动态规划理论基础1.1题目分类大纲1.2什么是动态规划?1.3背包问题1.4解题步骤1.5动态规划应该如何debug? 2.斐波那契数2.1题目2.2解法:动态规划2.2.1动态规划思路(1)确定dp数组以及下标的含义(2&…

SQL如何利用Bitmap思想优化array_contains()函数

目录 0 问题描述 1 位图思想 2 案例实战 3 小结 0 问题描述 在工作中,我们往往使用array_contains()函数来进行存在性问题分析,如判断某个数是否在某个数组中,但是当表数据量过多,存在大量array_contains()函数时,…

PHP定时任务框架taskPHP3.0学习记录7宝塔面板手动可以执行自动无法执行问题排查及解决方案(sh脚本、删除超过特定天数的日志文件、kill -9)

PHP定时任务框架taskPHP3.0学习记录 PHP定时任务框架taskPHP3.0学习记录1(TaskPHP、执行任务类的实操代码实例)PHP定时任务框架taskPHP3.0学习记录2(环境要求、配置Redis、crontab执行时间语法、命令操作以及Screen全屏窗口管理器&#xff0…

无缝对接配电自动化:IEC104转OPC UA网关解决方案

随着水电厂自动化发展的要求,具有一定规模的梯级水电站越来越多,为了实现水电站的无人值班(少人值守),并考虑到节能控制,电厂采用了集中监控。集中监控关注的是整个电网的安全稳定运行及电压、频率和整个电网的电力需求&#xff0…

中科院突破:TalkingGaussian技术实现3D人脸动态无失真,高效同步嘴唇运动!

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享,与你一起了解前沿深度学习信息! 引言:探索高质量3D对话头像的新方法 在数字媒体和虚拟互动领域,高质量的3D对话头像技术正变得日益重要。这种技术能够在虚拟现实、电影…

好看流光风格个人主页源码下载

这是一款美观流光作风个人主页HTML源码,觉得挺喜欢的,需求的自行下载! 源码下载:https://download.csdn.net/download/m0_66047725/89105857 更多资源下载:关注我。

JAVA前端快速入门基础_javascript入门(02)

写在前面:本文用于快速学会简易的JS,仅做扫盲和参考作用 1.JavaScript函数 什么是函数:执行特定任务的代码块 1.1定义: 使用function来进行定义(类似于python里面的def 或者java和c里面的void,int这些返回类型开头)。定义规则如下: func…

开源、轻量、易用的服务器实时监控工具:哪吒探针

本文首发于只抄博客,欢迎点击原文链接了解更多内容。 前言 哪吒探针是一个开源、轻量、易用的服务器监控、运维工具,它有以下几个特点: 一键安装:可以一键安装面板与 Agent,并且支持 Linux、Windows、MacOS、OpenWRT…

【HMGD】使用CubeMx配置GD32F303系列单片机进行DMA ADC

原理图查看 查原理图可以看到GD32F103C8T6的官方开发板GD32303C-START-V1.0的PA1没有接任何东西 使用PA1作为ADC端口 CubeMX配置ADC和时钟 配置ADC通道 启用循环模式 配置此通道ADC分频 配置ADC DMA为循环模式 配置时钟 可根据手册配置最大HZ GD32F303最高频率设定 生成…

使用SDRPI运行openwifi和设置网口

目录 一 制作启动盘 二 使用串口的方式启动openwifi 三 无线连接 四 网口设置,有线连接 五 使用SSH登录 一 制作启动盘 在github上下载img文件,由于github上下载速度比较慢,我会上传网盘链接 githun下载img文件地址: https://git…

【Schrödinger薛定谔软件使用实战】- 4lyw蛋白实战

文章目录 软件选择1 pretein preparation1.1 import and process注意1.1.1 preprocess可能遇到的问题 1.2 review and modify1.3 refine1.3.1 optimize优化氢键网络1.3.2 minimize 氢原子会进行能量最小化 2 ligand prepare3 生成对接盒子-receptor grid generation3.1 recepto…

假设检验随想

⭐️ 前言 你会吵架吗?你会用数学吵架吗,不会的话就过来看看吧,哈哈 西方人发明了现代意义上的概率论,于是就想把它推广到生产和生活中。借助一大堆的概率论中的概念,他们发明了假设检验,想利用有限的数据…

Unity 实现新手引导遮罩

Unity 复写OnPopulateMesh 实现新手引导遮罩、包含点击事件触发区域判断 https://download.csdn.net/download/shenliang34/89247117

在线听歌播放器 梨花带雨网页音乐播放器 网页音乐在线听 源码

最新梨花带雨网页音乐播放器二开优化修复美化版全开源版本源码下载 下 载 地 址 : runruncode.com/php/19749.html 梨花带雨播放器基于thinkphp6开发的XPlayerHTML5网页播放器前台控制面板,支持多音乐平台音乐解析。二开内容:修复播放器接口问题&am…

开启HIVE JDBC连接

开启HIVE JDBC连接 没有人能替你承受痛苦 也没有人能抢走你的坚强 目录 开启HIVE JDBC连接 1.开启命令 2.连接命令 3.hive连接jdbc报错 4.查看服务是否启动 》》》》》》开启HIVE JDBC连接《《《《《《 1.开启命令 hive --service hiveserver2 2.连接命令 beeline -u j…