ubuntu20安装opencv4和opencv_contrib 多版本共存

openCV 卸载

openCV 安装后的源码尽可能保留,因为可以直接从build文件夹下卸载已经安装的openCV.
参考链接:视觉学习笔记10——opencv的卸载、安装与多版本管理

如果已经安装完openCV,后续想重新装,需要先卸载掉安装的openCV.

在ubuntu终端命令行输入以下命令进入安装opencv的build目录并进行卸载操作。

cd build
sudo make uninstall
cd  .. 
sudo rm -r build

第一行代码为进到opencv下的build文件夹,如我的文件夹路径是~/Downloads/opencv-4.5.4/build
则需要将第一行更改为自己的opencv下的build路径。

最后在输入以下命令清理/usr(此处应为自己的文件夹)中所有opencv相关项即可。(此步骤可不需要)

sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*

像我先前的安装路径为/usr/local/opencv4.5.4, 该行指令可直接变为

sudo rm -r /usr/local/opencv4.5.4

安装路径
opencv4下文件夹 # openCV安装
参考链接:ubuntu20.04下多版本opencv共存和切换
由于打算运行PL-SLAM,因此安装openCV3.4.10和openCV4.5.4。

下载和安装依赖包

1、首先更新 apt-get,在安装前最好先更新一下系统,不然有可能会安装失败。在终端输入:

sudo apt-get update
sudo apt-get upgrade

2、接着安装官方给的opencv依赖包,在终端输入:

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
  1. 下载openCV3.4.10和opencv_contrib3.4.10源码压缩包,注意两者版本号需要相同。
  2. 下载后解压,将opencv_contrib3.4.10直接移入到opencv3.4.10文件夹下。

输入下述指令:

cd ~/Downloads/opencv-3.4.10 
mkdir build
cd build
cmake -D  CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.10  -D OPENCV_EXTRA_MODULES_PATH=/home/xiujie/Downloads/opencv-3.4.10/opencv_contrib-3.4.10/modules/ -D OPENCV_GENERATE_PKGCONFIG=YES -D OPENCV_ENABLE_NONFREE=True  -D BUILD_opencv_cudacodec=OFF ..


cd后跟的文件位置需要改为自己存opencv安装源码的真实位置。
关于cmake 后各项参数的意义在这个链接中讲的十分清楚亲测:Ubuntu 20.04上安装OpenCV 5.x with CUDA。
特别需要注意的是CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.10
表示的是后续openCV的安装位置。

到大这步可能会出现下载失败的问题,有条件的需要用到外网或者手动下载,手动下载的话参考链接:[
ubuntu20.04下多版本opencv共存和切换
(https://blog.csdn.net/xiao_qs/article/details/126650329)

  1. 编译安装。
    查一下自己电脑最多支持多少线程:

nproc

我的电脑输出是8,所以逐行执行

make -j4
sudo make install

环境配置

创建文件并打开:

sudo vim /etc/ld.so.conf.d/opencv.conf

在打开的文件中添加如下内容:

/usr/local/opencv3.4.10/lib

该行代码是添加opencv动态库路径,需要根据自己的安装路径来,例如我的安装路径是/usr/local/opencv3.4.10 则应该设置为/usr/local/opencv3.4.10 /lib, 如下图所示,我的是因为同时装了opencv4.5.4, 如果要用opencv3把opencv4的那一行注释掉就可以。
写入信息
保存之后打开新的终端,输入指令:

sudo ldconfig

使其保存生效,再在终端输入:

sudo vim /etc/bash.bashrc

打开文件后在末尾输入:

export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/usr/local/opencv3.4.10/lib/pkgconfig 
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/opencv3.4.10/lib

注意这两行指令的文件夹位置:
其中/usr/local/opencv3.4.10为安装位置。
/usr/local/opencv3.4.10/lib/pkgconfig ,这个在cmake编译的时候,必须设置OPENCV_GENERATE_PKGCONFIG=YES,否则就需要自己创建pkgconfig文件,很多教程有,此处不再赘述。下图为opencv4的,下面的文件名为opencv4.pc。opencv3的同理,文件名为opencv.pc。
pkgconfig文件夹
opencv4文件
保存退出, 终端输入:

source /etc/bash.bashrc

测试

输入代码

pkg-config --modversion opencv

版本号测试opencv4版本号测试
安装opencv4步骤同上,重点注意一下安装路径,将部分代码附上:

cd ~/Downloads/opencv-3.4.10 
mkdir build
cd build
cmake -D  CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4.5.4  -D OPENCV_EXTRA_MODULES_PATH=/home/xiujie/Downloads/opencv-4.5.4/opencv_contrib-4.5.4/modules/ -D OPENCV_GENERATE_PKGCONFIG=YES -D OPENCV_ENABLE_NONFREE=True  -D BUILD_opencv_cudacodec=OFF ..
#  线程数最好大点,加快速度,查看cpu线程: 
grep 'processor' /proc/cpuinfo | sort -u | wc -l
# 查到线程为8,因此为j8
 make -j8
sudo make install

sudo vim /etc/ld.so.conf.d/opencv.conf
/usr/local/opencv4.5.4/lib
sudo ldconfig
sudo vim /etc/bash.bashrc
#e xport PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/usr/local/opencv4.5.4/lib/pkgconfig 
# export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/opencv4.5.4/lib
source /etc/bash.bashrc

查看版本号pkg-config --modversion opencv4

多版本切换参见:视觉学习笔记10——opencv的卸载、安装与多版本管理

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

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

相关文章

实验室EM3电磁铁

锦正茂EM3电磁铁,可以通过更换电磁铁极头在一定范围内改善磁场的大小和磁场的均匀度 ,并且可以通过调整极头间距改变磁场的大小。主要用于磁滞现象研究、磁化系数测量、霍尔效应研究、磁光实验、磁场退火、核磁共振、电子顺磁共振、生物学研究、磁性测量…

【JavaEE】Servlet API 详解(HttpServletResponse类方法演示、实现自动刷新、实现自动重定向)

一、HttpServletResponse HttpServletResponse表示一个HTTP响应 Servlet 中的 doXXX 方法的目的就是根据请求计算得到相应, 然后把响应的数据设置到 HttpServletResponse 对象中 然后 Tomcat 就会把这个 HttpServletResponse 对象按照 HTTP 协议的格式, 转成一个字符串, 并通…

【邻接矩阵】

文章目录 邻接矩阵 图的逻辑结构:多对多。 图没有顺序存储结构,但可以借助二维数组来表示元素间的关系。 数组表示法(邻接矩阵)。 多重链表:邻接表,邻接多重表,十字链表。 邻接矩阵(…

Canvas—从入门到案例实现

文章目录 Canvas—从入门到案例实现一、设置canvas环境1.1 <canvas>元素1.2 渲染上下文context 二、形状与路径的绘制2.1 形状绘制2.2 路径绘制2.3 绘制一个笑脸 三、使用样式和颜色四、绘制文本五、使用图像5.1 图片源5.2 获取页面内的图片5.3 缩放Scaling5.4 切片Slici…

深度学习+opencv+python实现车道线检测 - 自动驾驶 计算机竞赛

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV56 数据集处理7 模型训练8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &am…

Vue3使用i18n国际化

安装 npm install vue-i18nnext 创建i18n文件夹 我这个项目是中、俄语言切换 zh.ts里放中文语言下要显示的字段&#xff0c;rn.ts里放俄语要显示的字段 index.ts import { createI18n } from vue-i18n; import ZH from ./zh.js; import RN from ./rn.js; const messages {zh…

远程创建分支本地VScode看不到分支

在代码存放处右击&#xff0c;点击Git Bash Here 输入git fetch–从远程仓库中获取最新的分支代码和提交历史 就OK啦&#xff0c;现在分支可以正常查看了

【SpringBoot3+Vue3】二【实战篇】-后端

目录 一、环境搭建 1、数据库脚本 2、pom 3、yml 4、通过mybatis-X生成实体pojo等 4.1 Article 4.2 Category 4.3 User 5、 Mapper 5.1 ArticleMapper 5.2 CategoryMapper 5.3 UserMapper 6、service 6.1 ArticleService 6.2 CategoryService 6.3 UserService …

使用亚马逊鲲鹏系统有什么好处?

亚马逊鲲鹏系统是一款能绕过亚马逊智能检测&#xff0c;完全模拟人类真实行为&#xff0c;通过模拟真实的人流量来帮助你提升你的产品排名&#xff0c;让你的产品出现在搜索首页&#xff0c;从而快速帮助提高销售业绩的营销工具&#xff01; 好处1&#xff1a;自动化操作更节约…

Fabric多机部署启动节点与合约部署

这是我搭建的fabric的网络拓扑 3 个 orderer 节点&#xff1b;组织 org1 , org1 下有两个 peer 节点&#xff0c; peer0 和 peer1; 组织 org2 , org2 下有两个 peer 节点&#xff0c; peer0 和 peer1; 以上是我的多机环境的网络拓扑&#xff0c;使用的是docker搭建的。我的网络…

什么是数据泄露?泄露途径有哪些?企业如何免遭数据泄露?

数据泄露指将机密信息、私人信息或其他敏感信息发布到不安全的环境中。数据泄露可能由意外引起&#xff0c;也可能是蓄意攻击的结果。 每年都有数百万人卷入数据泄露&#xff0c;包括意外看错病人图表的医生&#xff0c;以及大规模尝试访问政府计算机以发现敏感信息。 因为敏…

向量矩阵范数pytorch

向量矩阵范数pytorch 矩阵按照某个维度求和&#xff08;dim就是shape数组的下标&#xff09;1. torch1.1 Tensors一些常用函数 一些安装问题cd进不去不去目录PyTorch里面_表示重写内容 在默认情况下&#xff0c;PyTorch会累积梯度&#xff0c;我们需要清除之前的值 范数是向量或…

企业级真实应用利用Mybatis-Plus进行分页查询处理

怎么导入依赖我在之前的文章里边有说过不理解的可以看看 你应该懂点Mybatis-plus&#xff0c;真的好用 1&#xff1a;了解Page<T>类的使用 首先我们需要使用到Page类 &#xff0c;建立一个Page类&#xff0c;泛式类型中放入我们需要输出的类&#xff0c;是列表的话就…

分享5款好用到爆的神仙软件

​ 最近陆陆续续收到好多小伙伴的咨询&#xff0c;这边也是抓紧时间整理出几个好用的软件&#xff0c;希望可以帮到大家。 1.全局鼠标手势——MouseInc ​ MouseInc是一款由shuax制作的全局鼠标手势软件&#xff0c;还支持很多增强辅助功能&#xff0c;如屏幕取色、窗口管理、…

前端学习笔记--Event-loop

定义 Event Loop&#xff1a;即事件循环&#xff0c;是指浏览器或Node的一种解决javaScript单线程运行时不会阻塞的一种机制&#xff0c;也就是我们经常使用异步的原理。 **进程&#xff1a;**进程是计算机中的程序关于某数据集合上的一次运行活动&#xff0c;是系统进行资源分…

vmware安装MacOS以及flutter遇到的问题

安装过程&#xff1a;参考下面的文章 链接&#xff1a; 虚拟机VMware安装苹果系统macOS&#xff0c;超级详细教程&#xff0c;附文件下载&#xff0c;真教程&#xff01;&#xff01; 无限重启情况&#xff1a; &#xff08;二&#xff09; 配置虚拟机找到你的虚拟机安装文件…

查询站点真实IP地址,绕过CDN

一.如何判断站点是否使用了CDN&#xff1f; 使用其他省市的电脑进行ping看返回的IP地址是否相同通过第三方网站查询 站长工具 3.nslookup命令 二. 如何绕过CDN获取真实IP 子域名查询&#xff0c;因为很多站点只对主域名进行了CDN加速网站邮件头信息微步在线DNS查询

[PyTorch][chapter 63][强化学习-QLearning]

前言&#xff1a; 这里结合走迷宫的例子,重点学习一下QLearning迭代更新算法 0,1,2,3,4 是房间&#xff0c;之间绿色的是代表可以走过去。 5为出口 可以用下图表示 目录&#xff1a; 策略评估 策略改进 迭代算法 走迷宫实现Python 一 策略评估 强化学习最终是为了…

算法通关村——数组中第K大的数字

数组中第K大的数字 1、题目描述 ​ LeetCode215. 数组中的第K个最大元素。给定整数数组nums和整数k&#xff0c;请返回数组中第k个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第k个最大的元素&#xff0c;而不是第k个不同的元素。 示例1&#xff1a; 输入&#…

LLM prompt提示工程调试方法经验技巧汇总

现在接到一个LLM模型任务&#xff0c;第一反应就是能不能通过精调prompt来实现&#xff0c;因为使用prompt不需要训练模型&#xff0c;只需输入指令就可以实现和LLM的交互。按照以往经验&#xff0c;不同的prompt对模型输出影响非常大&#xff0c;如果能构造一个好的prompt&…