ubuntu20安装opencv4和opencv_contrib 多版本共存

news2024/11/20 20:40:22

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的卸载、安装与多版本管理

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

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

相关文章

离散卡尔曼滤波器算法详解及重要参数(Q、R、P)的讨论

公开数据集中文版详细描述参考前文:https://editor.csdn.net/md/?not_checkout1&spm1011.2124.3001.6192神经元Spike信号分析参考前文:https://blog.csdn.net/qq_43811536/article/details/134359566?spm1001.2014.3001.5501神经元运动调制分析参考…

安防监控EasyCVR视频汇聚平台使用海康SDK播放出现花屏是什么原因?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、…

《洛谷深入浅出进阶篇》P3397 地毯————二维差分

上链接:P3397 地毯 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P3397 上题干: 题目描述 在 nn 的格子上有 m 个地毯。 给出这些地毯的信息,问每个点被多少个地毯覆盖。 输入格式 第一行,两个…

Git | Git的基本操作以及原理介绍

文章目录 基本操作创建git仓库配置name和email .git目录的结构git add & git commit.git目录结构的变化 git追踪管理的数据git的版本回退回退的原理回退的三种情况 版本库中文件的删除git分支管理分支的删除合并分支时的冲突分支的合并模式分支策略git stash不要在master分…

实用篇-ES-DSL操作文档

一、mapping属性 mapping属性的官方文档: https://elastic.co/guide/en/elasticsearch/reference/current/index.html 下面的表格是介绍elasticsearch中的各个概念以及含义,看的时候重点看第二、三列,第一列是为了让你更理解第二列的意思,所…

嵌入式养成计划-54----ARM--异常处理流程

一百三十五、异常处理流程 135.1 arm处理器工作模式 135.2 异常源和异常模式关系 135.2.1 异常源 异常源就是引发处理器进入相应异常模式 135.2.2 对应关系 异常模式异常源FIQ模式FIQ类型异常源引发处理器进入FIQ模式IRQ模式IRQ类型异常源引发处理器进入IRQ模式SVC模式上电…

三、Eureka注册中心

目录 一、作用及调用方式 二、搭建eureka注册中心 三、注册user-service和order-service 四、新增实例 五、服务拉取 六、总结 一、作用及调用方式 在服务提供者启动时,它会向eureka注册中心提供自己的信息,并每30秒进行一次刷新eureka注册中心保存…

14——2

这道题目前面看不懂可以看比如后面的 这里1/3是因为S100的长度n3(100占3位),然后1出现的占比是1/3(1在第一位),0出现的占比是2/3,因为0出现了2次,(第二位,第…

【文章学习系列之模型】DAGMM

本章内容 文章概况模型结构损失函数实验结果实验分析总结 文章概况 《Deep Autoencoding Gaussian Mixture Model for Unsupervised Anomaly Detection》是2018年发表于ICLR的一篇论文,该论文提出一种端到端的无监督异常检测方法DAGMM,取得了不错的效果…

3.3 Linux 文件管理

1、查看系统信息 tty 命令 描述:查看当前系统在哪个终端语法:tty Linux默认情况下提供6个虚拟终端来让用户登录,系统将F1~F6定义为tty1~tty6。 ctrlalt(F1~F6) :从图形界面切换到命令行界面的第 n 个虚拟终端(F1 是…

社区牛奶直供站:创新供应链,满足消费者需求

社区牛奶直供站:创新供应链,满足消费者需求 社区牛奶直供站模式彻底改变了传统的多级经销链条和流通加价环节,通过削减中间环节,以相对低价直接供应牛奶给消费者。这样做实现了从奶企源头直接供应到社区家庭的目标,精准…

字符串旋转结果

文章目录 题目解法1解法2 题目 字符串旋转结果 写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 AABCD和s2 BCDAA,返回1 给定s1abcd和s2ACBD,返回0. AABCD左旋一个字符得到ABCDA AABCD左旋两个字…

人工智能基础_机器学习033_多项式回归升维_多项式回归代码实现_非线性数据预测_升维后的数据对非线性数据预测---人工智能工作笔记0073

然后我们来实际的操作一下看看,多项式升维的作用,其实就是为了,来对,非线性的数据进行拟合. 我们直接看代码 import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression X=np.linspace(-1,11,num=100) 从-1到11中获取100个数…

No203.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

fileread任意文件读取学习笔记

任意文件读取概述 一些网站的需求,可能会提供文件查看与下载的功能。如果对用户查看或下载的文件没有限制或者限制绕过,就可以查看或下载任意文件。这些文件可以是源代码文件,配置文件,敏感文件等等。 任意文件读取会造成&#x…

深入理解JVM虚拟机第二十五篇:详解JVM方法的绑定机制静态绑定和动态绑定,早期绑定晚期绑定,并编写代码从字节码角度证明这件事情

大神链接:作者有幸结识技术大神孙哥为好友,获益匪浅。现在把孙哥视频分享给大家。 孙哥链接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员 本专栏简介:话不多说,让我们一起干翻J…

电脑屏幕标记软件——Pointofix

前言 Pointofix是一款由德国人开发的屏幕标记软件,德国人的工匠精神,是出了名的,德国人开发的软件也一样。 Pointofix体积非常小巧,安装包只有1MB大小,使用Pointofix可以直接在屏幕上面写字、画图、标重点。 下面介…

基于单片机的电源切换控制器设计(论文+源码)

1.系统设计 在基于单片机的电源切换控制器设计中,系统功能设计如下: (1)实现电源的电压检测; (2)如果电压太高,通过蜂鸣器进行报警提示,继电器进行切换,使…

【Java 进阶篇】JQuery DOM操作:CRUD操作的前端魔法

在前端开发的舞台上,CRUD(Create, Read, Update, Delete)操作是一种极为重要的技能,它涉及对页面元素的增删改查。而JQuery,这位前端开发的魔法师,为我们提供了便捷而强大的方法,使得CRUD操作变…

Winform / WPF 自定义控件 —— IPV4 地址输入框

在开始阅读本文之前,如果您有学习创建自定义控件库并在其他项目中引用的需求,请参考:在Visual Studio中创建自定义Winform控件库并在其他解决方案中引用https://blog.csdn.net/YMGogre/article/details/126508042 0、引言 Winform / WPF 框架…