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

前提条件是安装好了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 torch

if 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【人工智能】Open WebUI+ollama+deepSeek-r1 本地部署大模型与知识库

目录 一 、命令行下载安装 二、运行 三、添加开机自启服务 ollama serve 四、重新加载配置、重启ollama server 五、查看模型文件信息 六、 添加open-webui 七、 配置open webui 八、创建自己知识库 九、网络加密优化 十、大工告成,大家如果有问题可以私信…

DeepSeek R1-7B 医疗大模型微调实战全流程分析(全码版)

DeepSeek R1-7B 医疗大模型微调实战全流程指南 目录 环境配置与硬件优化医疗数据工程微调策略详解训练监控与评估模型部署与安全持续优化与迭代多模态扩展伦理与合规体系故障排除与调试行业应用案例进阶调优技巧版本管理与迭代法律风险规避成本控制方案文档与知识传承1. 环境配…

Android Studio右上角Gradle 的Task展示不全

Android Studio 版本如下:Android Studio lguana|2023.21, 发现Gradle 的Tasks阉割严重,如下图,只显示一个other 解决方法如下:**Setting>Experimental>勾选Configure all gradle tasks during Gradle Sync(this can make…

[HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(2)

标题:[HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(2) 水墨不写bug 文章目录 一、无法拷贝类(class uncopyable)的设计解释:重要思想:使用示例 二、锁的RAII设计解释重要考虑使用示例 三、基于RAII模式和互斥锁的的日志…

YOLOv8改进SPFF-LSKA大核可分离核注意力机制

YOLOv8改进------------SPFF-LSKA 1、LSAK.py代码2、添加YAML文件yolov8_SPPF_LSKA.yaml3、添加SPPF_LSKA代码4、ultralytics/nn/modules/__init__.py注册模块5、ultralytics/nn/tasks.py注册模块6、导入yaml文件训练 1、LSAK.py代码 论文 代码 LSKA.py添加到ultralytics/nn/…

系统架构设计师—系统架构设计篇—特定领域软件体系结构

文章目录 概述领域分类垂直域水平域 系统模型基本活动参与角色 概述 特定领域软件架构(Domain Specific Software Architecture,DSSA)是在一个特定应用领域中,为一组应用提供组织结构参考的标准团建体系结构。 领域分类 垂直域…

第四次CCF-CSP认证(含C++源码)

第四次CCF-CSP认证 第一道(easy)思路及AC代码 第二道(easy)思路及AC代码遇到的问题 第三道(mid)思路及AC代码 第一道(easy) 题目链接 思路及AC代码 这题就是将这个矩阵旋转之后输出…

软考中级-数据库-3.3 数据结构-树

定义:树是n(n>=0)个结点的有限集合。当n=0时称为空树。在任一非空树中,有且仅有一个称为根的结点:其余结点可分为m(m>=0)个互不相交的有限集T1,T2,T3...,Tm…,其中每个集合又都是一棵树,并且称为根结点的子树。 树的相关概念 1、双亲、孩子和兄弟: 2、结点的度:一个结…

Django小白级开发入门

1、Django概述 Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。 Django 框架的核心组件有: 用于创建模型的对象关系映射为最终用户设计较好的管理界面URL 设计设计者友好的模板…

【爬虫】开篇词

一、网络爬虫概述 二、网络爬虫的应用场景 三、爬虫的痛点 四、需要掌握哪些技术? 在这个信息爆炸的时代,如何高效地获取和处理海量数据成为一项核心技能。无论是数据分析、商业情报、学术研究,还是人工智能训练,网络爬虫&…

C语言 —— 愿此世如黄金般辉煌 - 进制转换与操作符详解

目录 1. 操作符的分类 2. ⼆进制和进制转换 2.1 2进制转10进制 2.2 10进制转2进制 2.3 2进制转8进制 2.4 2进制转16进制 3. 原码、反码、补码 4. 移位操作符 4.1 左移操作符 4.2 右移操作符 5. 位操作符:&、|、^、~ 5.1 & 按位与 5.2 | 按位或 …

VsCode导入时选择相对路径

自动导入时总是以db://开头了,而我们通常需要的是相对路径,对VsCode进行如下设置: 打开 VSCode 设置: 使用快捷键 Ctrl ,(Windows/Linux)或 Cmd ,(Mac)。 或者在菜单栏中选择 …

Python3 爬虫 爬虫中间件

爬虫中间件的用法与下载器中间件非常相似,只是它们的作用对象不同。下载器中间件的作用对象是请求request和返回response;爬虫中间键的作用对象是爬虫,更具体地来说,就是写在spiders文件夹下面的各个文件。它们的关系,…

数据库1-2章

第一章 数据库理论 什么是数据库 数据: 描述事物的符号记录, 可以是数字、 文字、图形、图像、声音、语言等,数据有多种形式,它们都可以经过数字化后存入计算机。 数据库: 存储数据的仓库,是长期存放在…

Linux笔记---自定义shell

目录 前言 1. 程序框架 2. 打印命令行提示符 2.1 获取用户名(GetUserName) 2.2 获取主机名(GetHostName) 2.3 获取工作目录(GetPwd) 3. 获取命令行输入 4. 判断是否有重定向 5. 解析命令行 6. 内建命令 6.1 内建命令的特点 6.2 常见内建命令 6.3 内建命令 vs 外部命…

DeepSeek专题:DeepSeek-V2核心知识点速览

AIGCmagic社区知识星球是国内首个以AIGC全栈技术与商业变现为主线的学习交流平台,涉及AI绘画、AI视频、大模型、AI多模态、数字人以及全行业AIGC赋能等100应用方向。星球内部包含海量学习资源、专业问答、前沿资讯、内推招聘、AI课程、AIGC模型、AIGC数据集和源码等…

游戏引擎学习第138天

仓库:https://gitee.com/mrxiao_com/2d_game_3 资产:game_hero_test_assets_003.zip 发布 我们的目标是展示游戏运行时的完整过程,从像素渲染到不使用GPU的方式,我们自己编写了渲染器并完成了所有的工作。今天我们开始了一些新的内容&#…

【Hadoop】详解HDFS

Hadoop 分布式文件系统(HDFS)被设计成适合运行在通用硬件上的分布式文件系统,它是一个高度容错性的系统,适合部署在廉价的机器上,能够提供高吞吐量的数据访问,非常适合大规模数据集上的应用。为了做到可靠性,HDFS创建了…

计算机网络:计算机网络的概念

1.计算机网络:由若干个结点和链接这些的链路组成。 2.集线器(Hub):可以把多个结点连接起来,组成一个计算机网络。 不能避免数据冲突的情况 3.交换机(Switch):可以把多个结点连接起来&#x…

C/C++类型转换

目录 C语言中的类型转换 隐式类型转换: 显示类型转换: 总结: C中的类型转换 static_cast: reinterpret_cast: const_cast: dynamic_cast: RTTI C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参…