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

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

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

相关文章

flutter开发实战-长按TextField输入框cut、copy设置为中文复制、粘贴

flutter开发实战-长按TextField输入框cut、copy设置为中文复制、粘贴 在开发过程中,需要长按TextField输入框cut、copy设置为中文“复制、粘贴”,这里记录一下设置的代码。 一、pubspec.yaml设置flutter_localizations 在pubspec.yaml中设置flutter_l…

[python 刷题] 238 Product of Array Except Self

[python 刷题] 238 Product of Array Except Self 题目: Given an integer array nums, return an array answer such that answer[i] is equal to the product of all the elements of nums except nums[i]. The product of any prefix or suffix of nums is guar…

程序员必须掌握的算法

引言 作为一名程序员,掌握一些重要的算法是必不可少的。算法是解决问题的方法和步骤,对于程序员来说,熟悉和掌握一些常见的算法可以提高编程能力,解决复杂的计算问题。与此同时,算法是计算机科学中的核心概念&#xff…

pgsql/mysql/clickhouse性能对比

目前公司使用的关系型数据库版本较老,有计划对关系型数据库进行一次升级。有两个方案,一是将现在的mysql5.7升级到8.0,二是将数据库替换成pgsql15,所以对这两个库的查询写入和资源损耗进行一次对比。 前置准备 服务器 两台配置…

Cilium 1.11:服务网格的未来已来

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

Linux Ubuntu命令行快速配置C++开发环境

本文介绍在Linux操作系统的Ubuntu版本中,基于命令行,快速配置C 编辑、编译、运行的代码开发环境的简便方法。 在之前的文章Linux操作系统Ubuntu 22.04配置Visual Studio Code与C代码开发环境的方法(https://blog.csdn.net/zhebushibiaoshifu/article/det…

星际争霸之小霸王之小蜜蜂(十三)--接着奏乐接着舞

系列文章目录 星际争霸之小霸王之小蜜蜂(十二)--猫有九条命 星际争霸之小霸王之小蜜蜂(十一)--杀杀杀 星际争霸之小霸王之小蜜蜂(十)--鼠道 星际争霸之小霸王之小蜜蜂(九)--狂鼠之…

什么是集成测试?集成测试方法有哪些?

1、基本概念: 将软件集成起来后进行测试。集成测试又叫子系统测试、组装测试、部件测试等。集成测试主要是针对软件高层设计进行测试,一般来说是以模块和子系统为单位进行测试。 2、集成测试包含的层次: 1. 模块内的集成,主要是…

Linux sed

1.sed介绍 sed:Stream Editor,流编辑器、行编辑器、逐行编辑 sed将每行内容读入到“内存”中,在内存中进行处理,将结果返回给屏幕,此段内存空间称为模式空间。 sed默认不编辑原文件,仅对模式空间的数据进行处理&…

OA 电子审批流程是什么?

公司中,最最最常见也是最最最多的就是——各种审批。 我当年第一次实习,在一家国企的行政部门,我们部门领导那个时候最主要的工作就是“打通流程”,咱也不知道他在打通什么流程,反正这个很重要就是了。 结果&#xf…

CSS动效合集之实现气泡发散动画

前言 👏CSS动效合集之实现气泡发散动画,速速来Get吧~ 🥇文末分享源代码。记得点赞关注收藏! 1.实现效果 2.实现步骤 定义一个数组bubbles,用来存储气泡列表的基本新,w表示宽高,x表示绝对定位…

【Python基础】P01S01 变量与字符串

P01S01 变量与字符串 变量变量的命名规则 字符串字符串的表达方法字符串的基本操作 数整数与浮点数数中下划线常量 注释 变量 变量的命名规则 变量名只能包含字母、数字和下划线; 变量名能以字母或下划线开头,但是不能以数字开头; 变量名不能…

130. 被围绕的区域

130. 被围绕的区域 题目-中等难度示例1. 新建boardbfs2. 哈希bfs 题目-中等难度 给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。 示例 示例 1&#x…

6.SpringEL与List,Map

SpringEL与List,Map 文章目录 SpringEL与List,Map介绍Spring EL以注解的形式Spring EL以XML的形式 介绍 使用SpEL与 Map 和 List 的工作方式与Java是完全一样的 //get map whete key MapA Value("#{testBean.map[MapA]}") private String mapA;//get first value …

浅谈C++|类的继承篇

引子: 继承是面向对象三大特性之一、有些类与类之间存在特殊的关系,例如下图中: 我们发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。 这个时候我们就可以考虑利用继承的技术,减少…

2023全新TwoNav开源网址导航系统源码 | 去授权版

2023全新TwoNav开源网址导航系统源码 已过授权 所有功能可用 测试环境:NginxPHP7.4MySQL5.6 一款开源的书签导航管理程序,界面简洁,安装简单,使用方便,基础功能免费。 TwoNav可帮助你将浏览器书签集中式管理&#…

线程池启动线程 submit () 和 execute () 方法有什么不同?

ThreadPoolExecutor类是Java中用于创建和管理线程池的类,它提供了多个方法来提交任务给线程池,其中包括submit()和execute()方法。这两种方法有以下不同: 返回值:submit()方法返回一个Future对象,可以使用这个对象来跟踪任务的执行状态并获取任务的结果(如果有的话)。Fu…

JWT基础

概念 JSON Web Token本质上就是一串字符串,一串包含了很多信息的字符串令牌拥有三个部分头部-包含加密算法和令牌类型{"alg":"算法名称","type":"JWT"}负载-包含数据和信息-七个官方默认-也可以自己定义内容{iss&#xff…

ubuntu+.net6+docker 应用部署教程

先期工作 1、本地首先安装 Docker Desktop 2、本地装linux in windows 3、生成镜像 后期工作 1、云服务器部署 生成镜像方法 1、生成Dockerfile配置文件 开发工具visual studio 2022 如果项目已经存在,可以选中项目,右键点击->选择添加Docker…

基于Java的高校竞赛管理系统设计与实现(亮点:发起比赛、报名、审核、评委打分、获奖排名,可随意更换主题如蓝桥杯、ACM、王者荣耀、吃鸡等竞赛)

高校竞赛管理系统 一、前言二、我的优势2.1 自己的网站2.2 自己的小程序(小蔡coding)2.3 有保障的售后2.4 福利 三、开发环境与技术3.1 MySQL数据库3.2 Vue前端技术3.3 Spring Boot框架3.4 微信小程序 四、功能设计4.1 主要功能描述4.2 系统角色 五、系统…