Ubuntu22.04 Opencv4.5.1 CPU和GPU编译攻略,Opencv CPU和GPU编译保姆教程 亲自测试。
1、安装opencv依赖
安装时最好更换一下源。
sudo apt-get -y update
sudo apt-get -y install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get -y install libgtk-3-dev gfortran openexr libatlas-base-dev python3-dev python3-numpy
sudo apt-get -y install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev
sudo apt-get -y install libavcodec-dev libavformat-dev libswscale-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev
sudo apt-get -y install zlib1g-dev libwebp-dev libtiff5-dev libopenexr-dev libgdal-dev libv4l-dev libxine2-dev
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt-get -y update
sudo apt-get -y install libjasper1 libjasper-dev libdc1394-dev
sudo apt-get -y install aptitude
sudo aptitude -y install libgtk-3-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libgphoto2-dev
****切记先不要安装Anaconda,如果安装了,需要先把它的路径环境路径先注释掉!!!****
2、编译opencv库
2.1 CPU 库流程
准备opencv4.5.1代码
cd opencv4.5.1
mkdir build
cd build
//CPU 库编译
cmake -DCMAKE_BUILD_TYPE=Release -DOPENCV_GENERATE_PKGCONFIG=ON -DWITH_FFMPEG=OFF -DINSTALL_C_EXAMPLES=OFF -DINSTALL_PYTHON_EXAMPLES=OFF -DBUILD_PERF_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/soft/opencv451_cpu -DBUILD_opencv_world=ON -DBUILD_DOCS=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DWITH_GSTREAMER=ON -DBUILD_TIFF=ON -DBUILD_TBB=ON -DWITH_EIGEN=ON -DWITH_OPENGL=ON -DBUILD_opencv_python_tests=OFF -DBUILD_opencv_python_bindings_generator=OFF ..
2.2 //GPU 库流程
2.2.1、下载cuda版本:cuda_11.8.0_520.61.05_linux.run
2.2.2、下载cudnn版本:cudnn-linux-x86_64-8.6.0.163_cuda11-archive.tar.xz
**安装cuda和cudnn,参考:https://blog.csdn.net/weixin_49777848/article/details/131684172**
2.2.3、添加Cuda路径
gedit ~/.bashrc
export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
source ~/.bashrc
2.2.4、添加cudnn路径
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
2.2.5//GPU库编译
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DOPENCV_GENERATE_PKGCONFIG=ON -DWITH_FFMPEG=OFF -DINSTALL_C_EXAMPLES=OFF -DINSTALL_PYTHON_EXAMPLES=OFF -DBUILD_PERF_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/soft/opencv451_cuda -DBUILD_opencv_world=ON -DBUILD_DOCS=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DWITH_GSTREAMER=ON -DBUILD_TIFF=ON -DWITH_EIGEN=ON -DWITH_OPENGL=ON -DENABLE_FAST_MATH=ON -DWITH_CUDA=ON -DCUDA_FAST_MATH=ON -DCUDA_ARCH_BIN=7.5 -DWITH_CUBLAS=ON -DWITH_CUDNN=ON -DWITH_V4L=ON -DOPENCV_DNN_CUDA=ON -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib4.5.1/modules -DBUILD_opencv_python_tests=OFF -DBUILD_opencv_python_bindings_generator=OFF ..
make -j24
make install
2.3 可能错误:
错误一:
/sbin/ldconfig.real: /usr/local/cuda-11.8/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8 is not a symbolic link
解决:
cd /usr/local/cuda-11.8/targets/x86_64-linux/lib/
sudo ln -sf libcudnn_ops_infer.so.8.6.0 libcudnn_ops_infer.so.8.6
sudo ln -sf libcudnn_ops_infer.so.8.6 libcudnn_ops_infer.so.8
其他的一样的操作
3、例子调用(自己测试用,不方便公开)
3.1 把编译好的opencv lib和include库,在/soft/opencv451_cpu/ 和 /soft/opencv451_cuda/目录下,需要拷贝到测试用例对应的lib和include
如果用例在/home/VideoDiagnose下:
sudo cp -r /soft/opencv451_cpu/include/opencv4/opencv2 /home/VideoDiagnose/include
sudo cp /soft/opencv451_cpu/lib/libopencv_world* /home/VideoDiagnose/lib
cd /home/VideoDiagnose
sudo chmod -R 777 *
3.2 添加lib运行环境
sudo -i 先进入root模式
gedit /etc/ld.so.conf.d/VDXN.conf
添加,需要根据自己的实际路径添加:
/home/VideoDiagnose/lib
使其生效:
ldconfig
3.3 进入AlgTest目录下:
make
把生成的algTest拷贝到lib下,进入lib测试目录下,执行:
./algTest ./testData/9_对比度异常/
3.4 缺失的库在export_lib下
4. opencv4.5.1代码下载地址:
链接: https://pan.baidu.com/s/1jZ-e3r__eZMXShy2XdLucA 提取码: 5zin
相关文章:
Ubuntu22.04 Opencv4.5.1 CPU和GPU编译攻略,Opencv CPU和GPU编译保姆教程 亲自测试。
1、安装opencv依赖 安装时最好更换一下源。 sudo apt-get -y update sudo apt-get -y install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get -y install libgtk-3-dev gfortran openexr libatlas-base-dev python3-dev pyt…...
常识判断 --- 党史
目录 中共1~3大 例题 国民党 例题 中共4~5大 例题 中共起义~会议 例题 中共六届六中全会(1938年9月) 中共七大(1945年4月) 例题 中共七届二中全会 例题 中共8~10大 中共11~12届全会 例题 中共13~14大 …...
Rust 基础再理解
Rust堆栈 Rust中各种类型的值默认都存储在栈中,除非显式地使用Box::new()将它们存放在堆上,但数据要存放在栈中,要求其数据类型的大小已知。对于静态大小的类型,可直接存储在栈上,如裸指针、布尔、字符、整数浮点数&a…...
Opencv cuda版本在ubuntu22.04中安装办法,解决Could NOT find CUDNN的办法
文章目录 概要下载cuda的runfile版本配置环境变量官网下载cudann安装Opencv依赖包下载opencv和opencv_contrib并解压准备编译安装anaconda环境执行编译命令安装OpenCV并检查是否安装成功 概要 解决以下安装问题: -- Could NOT find CUDNN: Found unsuitable versi…...
全网首发YOLOv8暴力涨点:Gold-YOLO,遥遥领先,超越所有YOLO | 华为诺亚NeurIPS23
💡💡💡本文独家改进:提出了全新的信息聚集-分发(Gather-and-Distribute Mechanism)GD机制,Gold-YOLO,替换yolov8 head部分 实现暴力涨点 Gold-YOLO | 亲测在多个数据集能够实现大幅涨点 💡💡💡Yolov8魔术师,独家首发创新(原创),适用于Yolov5、Yolov7、…...
BD就业复习第四天
1. 布隆过滤器怎么实现去重 布隆过滤器是一种用于快速检查一个元素是否可能存在于一个大集合中的数据结构,但它并不适用于精确去重。因为布隆过滤器具有一定的误判率(可能会将不存在的元素误判为存在),所以不能确保完全的去重。但…...
数据结构 | 树
树 树是n(n>0)个结点的有限集。当n 0时,称为空树。在任意一棵非空树中应满足: 有且仅有一个特定的称为根的结点。当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm&#…...
Android11 适配
一、修改targetSdkVersion为30 将build.gradle的目标版本targetSdkVersion修改为30(Android 11) targetSdkVersion 30Android11的改变改变主要影响以Adnroid11 为目标版本的应用(targetSdkVersion>30才有影响),和所…...
UML基础与应用之对象图
什么是对象图? 对象图表示一组对象及它们之间的关系,是某一时刻系统详细信息的快照,描述系统交互的静态图形,它由协作的对象组成,但不包含在对象之间传递的任何消息。因为对象是类的实例化,所以说某一时刻…...
英码科技精彩亮相火爆的IOTE 2023,多面赋能AIoT产业发展!
9月20日至22日,在这金秋飒爽的季节,为期三天的IOTE 2023第二十届国际物联网展深圳站在深圳国际会展中心盛大举行。英码科技精彩亮相本届展会,并在同期举办的AIoT视觉物联产业生态大会发表了主题演讲,与生态伙伴们共同探讨AIoT产业…...
400G QSFP-DD FR4 与 400G QSFP-DD FR8光模块:哪个更适合您的网络需求?
QSFP-DD 光模块随着光通信市场规模的不断增长已成为400G市场中客户需求量最高的产品。其中400G QSFP-DD FR4和400G QSFP-DD FR8光模块都是针对波分中距离传输(2km)的解决方案,它们之间有什么不同?应该如何选择应用?飞速…...
【Android】Kotlin 中的 apply、let、with、also、run 到底有啥区别?
一、图示 二、apply apply 函数接收一个对象并返回该对象本身。它允许您在对象上执行一些操作,同时仍然返回原始对象。 这个函数的语法为: fun <T> T.apply(block: T.() -> Unit): T 其中,T 是对象的类型,block 是一…...
设计模式——职责链模式
职责链模式 职责链模式职责链模式解决什么问题?职责链模式实现 职责链模式 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象练成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止 …...
小程序自定义tabbar,中间凸起
微信小程序自带tabbar,但无法实现中间按钮凸起样式和功能,因此按照设计重新自定义一个tabbar 1、创建tabbar文件,与pages同级创建一个文件夹,custom-tab-bar,里面按照设计图将底部tabbar样式编写 <view class"tab-bar&q…...
数据结构-顺序栈C++示例
栈(stack)是限定仅在表尾进行插入或删除操作的线性表。 对栈来说,表尾端称为栈顶(top), 表头端称为栈底(bottom),不含元素的空表称为空栈。 假设栈 S ( a 1 , a 2 , a 3 , ⋯ , a n ) S(a_1,a_2,a_3,\cdots,a_n) S(a1,a2,a3,⋯,an…...
若依cloud -【 100 ~ 103 】
100 分布式日志介绍 | RuoYi 分布式日志就相当于把日志存储在不同的设备上面。比如若依项目中有ruoyi-modules-file、ruoyi-modules-gen、ruoyi-modules-job、ruoyi-modules-system四个应用,每个应用都部署在单独的一台机器里边,应用对应的日志的也单独存…...
可转债实战与案例分析——成功的和失败的可转债投资案例、教训与经验分享
实战与案例分析——投资案例研究 股票量化程序化自动交易接口 一、成功的可转债投资案例 成功的可转债投资案例提供了有价值的经验教训,以下是一个典型的成功案例: 案例:投资者B的成功可转债投资 投资者B是一位懂得风险管理的投资者&#…...
@NotNull注解不生效,全局异常处理
1.引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>3.1.2</version> </dependency> 2:实体类 实体类属性加上NotNull注解…...
【办公自动化】使用Python一键往Word文档的表格中填写数据(文末送书)
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...
OpenHarmony应用核心技术理念与需求机遇简析
一、核心技术理念 图片来源:OpenHarmony官方网站 二、需求机遇简析 新的万物互联智能世界代表着新规则、新赛道、新切入点、新财富机会;各WEB网站、客户端( 苹果APP、安卓APK)、微信小程序等上的组织、企业、商户等;OpenHarmony既是一次机遇、同时又是一次大的挑战&…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
