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,因此为j8make -j8
sudo make installsudo 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.hqwc.cn/news/175922.html

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

相关文章

量化交易:使用 python 进行股票交易回测

执行环境: Google Colab 1. 下载数据 import yfinance as yfticker ZM df yf.download(ticker) df2. 数据预处理 df df.loc[2020-01-01:].copy()使用了 .loc 方法来选择索引为 ‘2020-01-01’ 以后的所有行数据。通过 .copy() 方法创建了一个这些数据的副本,确…

Nginx 版本信息泄露解决方案

Nginx 【CVE-2021-23017;CVE-2022-41742】 【影响】 攻击者可能使用泄露的版本信息来确定该版本服务器有哪些安全漏洞,据此展开进一步的攻击。以下是百度的请求示例,也是有版本泄露: 【解决方案】 在Server节点增加以下配置: #…

SDL2 播放视频文件(MP4)

1.简介 这里引入FFmpeg库,获取视频流数据,然后通过FFmpeg将视频流解码成YUV原始数据,再将YUV数据送入到SDL库中实现视频播放。 2.FFmpeg的操作流程 注册API:av_register_all()构建输入AVFormatContext上下文:avform…

【原创课设】java+swing+mysql选课管理系统设计与实现

摘要: 随着学校规模的扩大和课程设置的多样化,传统的手工选课管理方式已经无法满足现代教育的需求。因此,开发一款高效、便捷的选课管理系统变得尤为重要。该系统可以提高选课工作的效率,减少人为错误,同时也能为学生…

verdi merge fsdb出现信号冲突的解决办法

前段时间介绍了verdi用 Edit Virtual File的方式把几个fsdb文件merge起来的方法 由于当时实验的时候只用了两个小的fsdb文件,每个fsdb文件中包含的信号量也比较少,所以并没有发现问题 我是用 Edit Virtual FIle把dump不同hier的fsdb文件merge到一起&am…

【Linux】:静动态库

静动态库 一.静态库1.设计静态库2.生成静态库3.发布静态库4.使用静态库 二.动态库1.设计动态库2.生成和发布动态库3.使用 三.进程地址空间1.程序在加载前的地址2.程序在加载后的地址3.动态库的地址 一.静态库 程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候…

【算法练习Day48】回文子串最长回文子序列

​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 回文子串最长回文子序列总结…

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

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

数据结构-散列表

列表(Hash Table),又称哈希表,是一种数据结构,特点是:数据元素的关键字与其存储地址直接相关 例:有一堆数据元素,关键字分别为{19,14,23&#xff…

Ansys Lumerical | 用于增强现实系统的表面浮雕光栅

在本示例中,我们使用 RCWA 求解器设计了一个斜面浮雕光栅 (SRG),它将用于将光线耦合到单色增强现实 (AR) 系统的波导中。光栅的几何形状经过优化,可将正常入射光导入-1 光栅阶次。 然后我们将光栅特性导出为 Lumerical Sub-Wavelength Model …

【NI-DAQmx入门】触发相关

触发概述 触发采集为用户提供了两个主要好处:它对输入信号相对于触发事件进行计时,因此用户仅捕获感兴趣区域中的信号,从而节省硬件带宽和内存。 模拟触发和数字触发 模拟触发和数字触发的区别在于触发源的不同。数字触发是一种 TTL 信号&am…

压测工具主要功能是什么?该怎样选择?

压测工具是一类用于模拟并评估系统在不同负载条件下的性能的软件应用程序。通过模拟大量用户同时访问系统,压测工具能够帮助开发者识别系统的瓶颈、性能瓶颈以及潜在的故障点。这种实时、模拟的方式允许开发者在正式投入使用之前发现并解决问题,提高系统…