ubuntu 20.04 C++ 源码编译 cuda版本 opencv4.5.0

ops/2025/3/10 1:52:12/

前提条件是安装好了cuda和cudnn

点击下载:
opencv_contrib4.5.0
opencv 4.5.0
解压重命名后
进入opencv目录,创建build目录

“CUDA_ARCH_BIN= ?” 这里要根据显卡查询一下,我的cuda是11,显卡1650,所以是7.5
查询方法1:
查询链接:https://developer.nvidia.com/cuda-gpus
查询方法2:

import torchif torch.cuda.is_available():major, minor = torch.cuda.get_device_capability()arch_bin = f"{major}.{minor}"print(arch_bin)
else:print("CUDA is not available.")

安装依赖:

apt-get update
apt-get install build-essential cmake git pkg-config libgtk-3-dev \libavcodec-dev libavformat-dev libswscale-dev \libv4l-dev libxvidcore-dev libx264-dev libjpeg-dev \libpng-dev libtiff-dev gfortran openexr \libatlas-base-dev \libtbb2 libtbb-dev libdc1394-22-dev libopenblas-dev \liblapacke-dev libhdf5-dev libprotobuf-dev protobuf-compiler

注意路径更改:

cmake -D CMAKE_BUILD_TYPE=RELEASE \-D CMAKE_INSTALL_PREFIX=/usr/local \-D WITH_TBB=ON \-D BUILD_TBB=ON \-D ENABLE_FAST_MATH=1 \-D CUDA_FAST_MATH=1 \-D WITH_CUBLAS=1 \-D WITH_V4L=ON \-D WITH_LIBV4L=ON \-D WITH_CUDA=ON \-D WITH_CUDNN=ON \-D WITH_CUDEV=ON \-D WITH_GTK_2_X=ON \-D WITH_NVCUVID=ON \-D CUDA_ARCH_BIN=7.5 \-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \-D WITH_OPENGL=ON \-D WITH_FFMPEG=ON \-D OPENCV_GENERATE_PKGCONFIG=YES \..

踩坑1:

认真观察会发现
在这里插入图片描述
打开看到的就是未下载的文件,需要下载后移动到对应位置。
在这里插入图片描述
压缩文件还能科学上网手动下载,但是.i文件我不知道怎么下载,因为按照网页访问会直接列出内容,我复制后,按照上面给的文件进行保存,又来一遍发现还是提示我未下载。最后是使用别人下载好的 .cache 文件,才编译成功的。
如果不缺文件的话就没有这个sh脚本。

踩坑2:

没加环境变量
使用方法二就成功了。

# 方法一
# 临时生效(仅当前终端)
# bash
# 复制
# # 假设库路径为 /usr/local/lib
# export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH#方法二
# 永久生效
# bash
# 复制
# # 创建配置文件
# sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'# # 更新动态链接器缓存
# sudo ldconfig

开始编译:

make -j8

安装

make install

创建配置文件

sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'

更新动态链接器缓存

ldconfig

http://www.ppmy.cn/ops/164531.html

相关文章

Windsuf 连接失败问题:[unavailable] unavailable: dial tcp...

问题描述 3月6日,在使用Windsuf 时,遇到以下网络连接错误: [unavailable] unavailable: dial tcp 35.223.238.178:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of…

2025 年开源替代方案为何正在取代 OutSystems?技术自由度与成本优势深度解析

原文链接:https://www.nocobase.com/cn/blog/outsystems-open-source-alternatives OutSystems 的隐藏成本不只是金钱 OutSystems 是企业低代码开发领域的领军者。通过将生成式 AI 工具深度集成到软件生命周期,OutSystems 助力企业快速构建客户导向的门…

DeepSeek集成到VScode工具,让编程更高效

DeepSeek与VScode的强强联合,为编程效率树立了新标杆。 DeepSeek,一款卓越的代码搜索引擎,以其精准的索引和高速的检索能力,助力开发者在浩瀚的代码海洋中迅速定位关键信息。 集成至VScode后,开发者无需离开熟悉的编辑…

AI正逐渐进入科技+非科技的深水区

随着AI的快速发展,人工智能正逐渐进入一个融合科技与非科技领域的复杂系统。在传统上,AI主要依赖于科学技术,如算法、计算力和大数据等,来处理和分析信息,进行预测和决策。然而,随着AI的应用范围不断扩展&a…

用友 U8出入库查询SQL 连接UNION ALL

-- 销售出库单查询 SELECT 销售出库单 AS 单据类型, a.cCode AS 单号, a.dDate AS 日期, a.cMaker AS 制单人, a.cHandler AS 审核人, a.dVeriDate AS 审核日期, b.cInvCode AS 存货编码, b.iQuantity AS 数量, b.cBatch AS 批号, c.…

hbase集群archive目录过大问题处理

1.问题现象 现场反馈hbase集群/hbase/archive目录过大,大小约为1.52PB 现场集群已经清理掉2个月以前的snapshot文件,当前archive目录文件仍不能释放现场发现1T以上的archive子目录有211个查看集群hbase配置,hmaster堆栈大小20GB,hmaster清理周期5分钟查看hmaster进程分配内…

②EtherCAT转Modbus485RTU网关多路同步高速采集无需编程串口服务器

EtherCAT转Modbus485RTU网关多路同步高速采集无需编程串口服务器https://item.taobao.com/item.htm?ftt&id798036415719 网关 MS-A2-1021 产品功能 MS-A2-1021 网关通过 EtherCAT 协议与自由协议或 Modbus 协议的相互转换,可以将RS485 串口设备接入 EtherCA…

2.2.1 网络原理-posix api

文章目录 2.2.1 网络原理-posix api1. posix api1. 建立链接1.socket();2. bind(fd);3. listen();4. accept();5. 三次握手1. seqnum2…