(2024)Ubuntu源码安装多个版本的opencv并切换使用

本人工作会用到x86_64的opencv和aarch64的opencv,所以写下来备忘自用

一、源码编译安装

依赖库安装:

sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev

opencv官网:Releases - OpenCV

在opencv文件夹内进行如下操作。

mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv_3.4.16 ..
make -j8      # 8代表开8个线程去处理,可以设置为 2,4,6等
sudo make install

我把安装路径设置为“/usr/local/opencv_3.4.16”,同时也推荐各位自定义安装路径,多版本的情况下比较好分类。如果不指定安装路径,则默认各部分分别安装在/usr/local/目录的includebinlib3个文件夹下。

我演示的是3.4.16版本的opencv,opencv4.0以上版本默认不使用pkg-config,需要在cmake命令中增加一条代码来手动开启(4.0以下的加了也没关系,因为它默认就是开的)

-D OPENCV_GENERATE_PKGCONFIG=YES

同理可以安装其他版本,或者使用交叉编译工具安装其他格式的opencv 


二、环境配置及切换版本

sudo gedit /etc/ld.so.conf

里面加上 /usr/local,后面它就会去这个目录下找库文件

sudo ldconfig   # 保存配置

接下来这个是切换opencv版本的关键

sudo gedit /etc/bash.bashrc

在文件的末尾,加上一下三行

export PKG_CONFIG_PATH=/usr/local/opencv_3.4.16/lib/pkgconfig #配置文件
export LD_LIBRARY_PATH=/usr/local/opencv_3.4.16/lib           #库文件
export OpenCV_DIR=/usr/local/opencv_3.4.16                    #整个opencv文件

其中opencv_3.4.16这个是我上面安装的路径,你们根据自己的自行调整,有多个版本的时候,直接套用这三行,改后面的安装路径就好了,比如下图,我目前就是在用3.4.0,然后把另外一个注释掉了。

保存配置

source /etc/bash.bashrc

查看opencv版本

pkg-config opencv --modversion

如果你是在idea里面,执行完上述操作后发现版本没有切换,请重启一下idea


有问题欢迎交流

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

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

相关文章

WPF-基础及进阶扩展合集(持续更新)

目录 一、基础 1、GridSplitter分割线 2、x:static访问资源文件 3、wpf触发器 4、添加xaml资源文件 5、Convert转换器 6、多路绑定与多路转换器 二、进阶扩展 1、HierarchicalDataTemplate 2、XmlDataProvider从外部文件获取源 3、TextBox在CellTemplate中的焦点问题…

Harmony创建Page省事小技巧

在创建Page页面时,选择ArkTS File时,创建的文件不会自动生成基础代码,也不会自动在main_page.json中自动进行注册,如何解决问题呢,其实很简单创建Page页面时选择Page项后就会创建Page文件,创建完的页面会自…

【C语言】2048小游戏【附源码】

欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 一、游戏描述: 2048是一款数字益智类游戏,玩家需要使用键盘控制数字方块的移动,合并相同数字的方块,最终达到数字方块上出现“2048”的目标。 每次移动操作,所…

掌握这些技巧:Flutter应用顺利登陆App Store的秘诀

引言 🚀 Flutter作为一种跨平台的移动应用程序开发框架,为开发者提供了便利,使他们能够通过单一的代码库构建出高性能、高保真度的应用程序,同时支持Android和iOS两个平台。然而,完成Flutter应用程序的开发只是第一步…

Python快速入门系列-8(Python数据分析与可视化)

第八章:Python数据分析与可视化 8.1 数据处理与清洗8.1.1 数据加载与查看8.1.2 数据清洗与处理8.1.3 数据转换与整理8.2 数据可视化工具介绍8.2.1 Matplotlib8.2.2 Seaborn8.2.3 Plotly8.3 数据挖掘与机器学习简介8.3.1 Scikit-learn8.3.2 TensorFlow总结在本章中,我们将探讨…

了解这些技术:Flutter应用顺利登陆iOS平台的步骤与方法

引言 🚀 Flutter作为一种跨平台的移动应用程序开发框架,为开发者提供了便利,使他们能够通过单一的代码库构建出高性能、高保真度的应用程序,同时支持Android和iOS两个平台。然而,完成Flutter应用程序的开发只是第一步…

Flash存储芯片:NOR Flash、NAND Flash、UFS和eMMC的比较与解析

前言 在数字化时代的今天,数据的存储和管理变得越来越重要。各种各样的存储技术应运而生,以满足不同的使用场景和需求。其中,Flash存储芯片以其非易失性、可擦写性和可编程性等优势,占据了重要地位。本博客将详细介绍Flash存储芯片…

在线点餐(源码+文档)

在线点餐系统(小程序、ios、安卓都可部署) 文件包含内容程序简要说明含有功能项目截图客户端主页登录点餐注册个人资料我的 后台管理商品管理分类管理用户管理登录页订单管理分类管理 文件包含内容 1、搭建视频 2、流程图 3、开题报告 4、数据库 5、参考…

codeforces Edu 142 D. Fixed Prefix Permutations 【思维、字典树求LCP】

D. Fixed Prefix Permutations 题意 给定 n n n 个长度为 m m m 的排列 a 1 , a 2 , . . . a n a_1,a_2,...a_n a1​,a2​,...an​ 定义一个排列 p p p 的 价值 为 最大顺序长度 k k k: p 1 1 , p 2 2 , p 3 3 , . . . p k k p_1 1,p_2 2, p_3 3, ...…

【威胁情报综述阅读3】Cyber Threat Intelligence Mining for Proactive Cybersecurity Defense

【威胁情报综述阅读1】Cyber Threat Intelligence Mining for Proactive Cybersecurity Defense: A Survey and New Perspectives 写在最前面一、介绍二、网络威胁情报挖掘方法和分类A. 研究方法1) 第 1 步 - 网络场景分析:2) 第 2 步 - 数据…

MySQL 8.0.13安装配置教程

写个博客记录一下,省得下次换设备换系统还要到处翻教程,直接匹配自己常用的8.0.13版本 1.MySQL包解压到某个路径 2.将bin的路径加到系统环境变量Path下 3.在安装根目录下新建my.ini配置文件,并用编辑器写入如下数据 [mysqld] [client] port…

使用 Docker 部署 Puter 云桌面系统

1)Puter 介绍 :::info GitHub:https://github.com/HeyPuter/puter ::: Puter 是一个先进的开源桌面环境,运行在浏览器中,旨在具备丰富的功能、异常快速和高度可扩展性。它可以用于构建远程桌面环境,也可以作为云存储服…