OpenCV4.9.0开源计算机视觉库在 Linux 中安装

返回目录:OpenCV系列文章目录(持续更新中......)

上一篇:OpenCV 环境变量参考 

下一篇:将OpenCV与gcc和CMake结合使用

引言:

OpenCV是一个开源的计算机视觉库,由英特尔公司所赞助。它是一个跨平台的库,可运行于Windows、Linux、Mac OS X以及Android系统上,并且支持多种编程语言。OpenCV为用户提供了丰富的计算机视觉算法和函数库,能够用于图像处理、模式识别、机器视觉、智能交通、自动驾驶等多个领域。本篇文章将介绍如何在Linux上安装OpenCV 4.9.0。在这个过程中,我们将会安装和配置OpenCV所需要的依赖库,下载和构建OpenCV 4.9.0的源代码,并将其安装到系统中。安装OpenCV之后,我们还将会配置适当的环境变量,以确保OpenCV正确地工作。本文假设您对Linux有基本的了解,并有一定的计算机编程和系统设定经验。

兼容性:OpenCV >= 3.0

快速入门

1. 安装依赖库:OpenCV依赖许多其他的库,因此需要先安装这些依赖库。在终端中运行以下命令,安装依赖库:  
 

 sudo apt-get update
 sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
 sudo apt-get install python3.7-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev   

2. 下载OpenCV4.9.0:从OpenCV的官方网站下载OpenCV4.9.0的源代码,并解压缩到本地目录:

 wget https://github.com/opencv/opencv/archive/4.9.0.zip
 unzip 4.9.0.zip -d opencv-4.9.0   

3. 构建安装:

   进入解压后的OpenCV4.9.0目录,创建一个新的build目录,并进入该目录: 

  cd opencv-4.9.0
  mkdir build
  cd build

   使用cmake来生成makefile并构建:
 

 cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
 make -j$(nproc)
 sudo make install

   4. 配置环境变量:

   在终端窗口中输入以下命令:

  echo 'export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig' >> .bashrc
  source ~/.bashrc


    这将向您的bash shell中添加OpenCV的库路径和头文件路径。

至此,在 Linux 中安装 OpenCV 4.9.0 完成。需要注意的是,安装过程可能会因系统或计算机配置而异,因此在实际安装时请根据提示进行选择和操作。

编译核心模块
#  安装最低限度的先决条件(Ubuntu 18.04 作为参考)
sudo apt update && sudo apt install -y cmake g++ wget unzip
# 下载和解压源码
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.x.zip
解压缩opencv.zip
# 创建构建目录
mkdir -p build && cd build
# 配置
cmake  ../opencv-4.x
# 构建
cmake --build .
 opencv_contrib方式编译构建 
# 安装最低限度的先决条件(Ubuntu 18.04 作为参考)
sudo apt update && sudo apt install -y cmake g++ wget unzip
# 下载和解压源码
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.x.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.x.zip
解压缩opencv.zip
解压缩opencv_contrib.zip
# 创建构建目录并切换到其中
mkdir -p build && cd build
# 配置
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.x/modules ../opencv-4.x
# 构建
cmake --build 。

 详细流程

 本部分提供有关生成过程的更多详细信息,并介绍替代方法和工具。有关常规安装详细信息,请参阅 OpenCV 安装概述教程,有关配置选项文档,请参阅 OpenCV 配置选项参考。

安装编译器和生成工具
要编译 OpenCV,您需要一个 C++ 编译器。通常它是 G++/GCC 或 Clang/LLVM:
安装GCC...
sudo apt install -y g++
... 或者 Clang:
sudo apt install -y clang
OpenCV使用的CMake 构建配置工具
sudo apt install -y cmake

CMake 可以为不同的构建系统生成脚本,例如 make、ninja:
安装 Make...
sudo apt install -y make

... 或者Ninja:

sudo apt install -y ninja-build
用于获取和解压缩源代码的安装工具:
wget and 解压缩...
sudo apt install -y wget unzip
... 或者git:
sudo apt install -y git

下载源代码

以下两种方法可以获取 OpenCV 源代码:

1、使用 Web 浏览器或任何下载工具(~80-90Mb)下载存储库快照并解压缩.

wget -O opencv.zip https://github.com/opencv/opencv/archive/4.x.zip

解压 opencv.zip

mv opencv-4.x opencv

...或使用 git 将存储库克隆到本地计算机以获取完整的更改历史记录 (>470Mb)

git clone https://github.com/opencv/opencv.git
git -C opencv checkout 4.x

注意
配置过程可以从 Internet 下载一些文件以满足库依赖关系,连接失败可能会导致某些模块或功能被关闭或行为不同。有关详细信息和完整的配置选项参考,请参阅 OpenCV 安装概述和 OpenCV 配置选项参考教程。
如果在生成过程中遇到问题,请尝试清理或重新创建生成目录。配置中的更改(如禁用依赖项、修改构建脚本或将源切换到另一个分支)处理得不好,可能会导致工作区中断。
Make 可以并行运行多个编译进程,-j<NUM线程数)>选项表示“同时运行 <NUM(线程数)> 作业”。-j未选用Ninja 将自动检测可用处理器内核的数量,并且不需要选项。

检查生成结果
成功构建后,您将在目录中找到库,在目录中找到可执行文件(test、samples、apps):build/libbuild/bin

ls bin
ls lib

CMake 包文件将位于构建根目录中:

ls OpenCVConfig*.cmake
ls OpenCVModules.cmake

安装

警告:
安装过程仅将文件复制到预定义的位置,并进行少量修补。使用此方法进行安装不会将 opencv 集成到系统软件包注册表中,因此,例如,opencv 无法自动卸载。我们不建议普通用户进行系统范围的安装,因为可能与系统软件包冲突。
默认情况下,OpenCV 将安装到该目录,所有文件都将复制到以下位置:/usr/local
/usr/local/bin- 可执行文件
/usr/local/lib- 库 (.so)
/usr/local/cmake/opencv4- cmake 软件包
/usr/local/include/opencv4-头
/usr/local/share/opencv4- 其他文件(例如XML格式的训练库)
由于它归 root 用户所有,因此应使用提升的权限()执行安装:/usr/localsudo

sudo make install

或者

sudo ninja install

安装根目录可以通过配置CMAKE_INSTALL_PREFIX参数进行更改,

例如 -DCMAKE_INSTALL_PREFIX=$HOME/.local安装到当前用户的本地目录。

可以使用参数OPENCV_*_INSTALL_PATH更改安装布局。有关详细信息,请参阅 OpenCV 配置选项参考教程

参考文献:

1.Installation in Linux  作者:Ana Huamán

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

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

相关文章

确保云原生部署中的网络安全

数字环境正在以惊人的速度发展&#xff0c;组织正在迅速采用云原生部署和现代化使用微服务和容器构建的应用程序&#xff08;通常运行在 Kubernetes 等平台上&#xff09;&#xff0c;以推动增长。 无论我们谈论可扩展性、效率还是灵活性&#xff0c;对于努力提供无与伦比的用…

源码|批量执行invokeAll()多选一invokeAny()

ExecutorService中定义了两个批量执行任务的方法&#xff0c;invokeAll()和invokeAny()&#xff0c;在批量执行或多选一的业务场景中非常方便。invokeAll()在所有任务都完成&#xff08;包括成功/被中断/超时&#xff09;后才会返回&#xff0c;invokeAny()在任意一个任务成功&…

校园博客系统 |基于springboot框架+ Mysql+Java的校园博客系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 系统功能设计 数据库E-R图设计 lunwen参考 摘要 研究…

MySQL语法分类 DDL(1)

DDL&#xff08;1&#xff09;(操作数据库、表) 数据库操作(CRUD) C(Create):创建 //指定字符集创建 create database db_1 character set utf8;//避免重复创建数据库报错可以用一下命令 create database if not exists db_1 character set utf8;R(Retrieve):查询 //查询所…

电源适配器

电源适配器 1. 选购指南2. 接口测量方法3. 电源接口4. 抗干扰磁环&#xff0c;稳定输出References 1. 选购指南 插头尺度相同&#xff0c;供电电压 (V) 相同&#xff0c;电流 (A) > 原来的电流 (A) INPUT (输入)&#xff0c;OUTPUT (输出) 2. 接口测量方法 3. 电源接口 外…

ARM和AMD介绍

一、介绍 ARM 和 AMD 都是计算机领域中的知名公司&#xff0c;它们在不同方面具有重要的影响和地位。 ARM&#xff08;Advanced RISC Machine&#xff09;&#xff1a;ARM 公司是一家总部位于英国的公司&#xff0c;专注于设计低功耗、高性能的处理器架构。ARM 架构以其精简指…

HCIP—BGP邻居关系建立实验

BGP的邻居称为&#xff1a;IBGP对等体 EBGP对等体 1.EBGP对等体关系&#xff1a; 位于 不同自治系统 的BGP路由器之间的BGP对等体关系 EBGP对等体一般使用 直连建立 对等体关系&#xff0c;EBGP邻居之间的报文 TTL中值设置为1 两台路由器之间建立EBGP对等体关系&#xff0…

Python Web开发记录 Day12:Django part6 用户登录

名人说&#xff1a;东边日出西边雨&#xff0c;道是无晴却有晴。——刘禹锡《竹枝词》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 1、登录界面2、用户名密码校验3、cookie与session配置①cookie与session②配置…

【机器学习-02】矩阵基础运算---numpy操作

在机器学习-01中&#xff0c;我们介绍了关于机器学习的一般建模流程&#xff0c;并且在基本没有数学公式和代码的情况下&#xff0c;简单介绍了关于线性回归的一般实现形式。不过这只是在初学阶段、为了不增加基础概念理解难度所采取的方法&#xff0c;但所有的技术最终都是为了…

【01】htmlcssgit

01-前端干货-html&css 防脱发神器 一图胜千言 使用border-box控制尺寸更加直观,因此,很多网站都会加入下面的代码 * {margin: 0;padding: 0;box-sizing: border-box; }颜色的 alpha 通道 颜色的 alpha 通道标识了色彩的透明度,它是一个 0~1 之间的取值,0 标识完全…

C语言之快速排序

目录 一 简介 二 代码实现 快速排序基本原理&#xff1a; C语言实现快速排序的核心函数&#xff1a; 三 时空复杂度 A.时间复杂度 B.空间复杂度 C.总结&#xff1a; 一 简介 快速排序是一种高效的、基于分治策略的比较排序算法&#xff0c;由英国计算机科学家C.A.R. H…

【Machine Learning】Suitable Learning Rate in Machine Learning

一、The cases of different learning rates: In the gradient descent algorithm model: is the learning rate of the demand, how to determine the learning rate, and what impact does it have if it is too large or too small? We will analyze it through the follow…

HCIP—OSPF课后练习一

本实验模拟了一个企业网络场景&#xff0c;R1、R2、R3为公司总部网络的路由器&#xff0c;R4、R5分别为企业分支机构1和分支机构2的路由器&#xff0c;并且都采用双上行方式与企业总部相连。整个网络都运行OSPF协议&#xff0c;R1、R2、R3之间的链路位于区域0&#xff0c;R4与R…

Redis和Mysql的数据一致性问题

在高并发的场景下&#xff0c;大量的请求直接访问Mysql很容易造成性能问题。所以我们都会用Redis来做数据的缓存&#xff0c;削减对数据库的请求的频率。 但是&#xff0c;Mysql和Redis是两种不同的数据库&#xff0c;如何保证不同数据库之间数据的一致性就非常关键了。 1、导…

并查集Disjoint Set

并查集的概念 并查集是一种简单的集合表示&#xff0c;它支持以下三种操作 1. make_set(x)&#xff0c;建立一个新集合&#xff0c;唯一的元素是x 2. find_set(x)&#xff0c;返回一个指针&#xff0c;该指针指向包含x的唯一集合的代表&#xff0c;也就是x的根节点 3. union_…

Echo框架:高性能的Golang Web框架

Echo框架&#xff1a;高性能的Golang Web框架 在Golang的Web开发领域&#xff0c;选择一个适合的框架是构建高性能和可扩展应用程序的关键。Echo是一个备受推崇的Golang Web框架&#xff0c;以其简洁高效和强大功能而广受欢迎。本文将介绍Echo框架的基本特点、使用方式及其优势…

学习shell脚本

文章目录 什么是shell脚本为什么要学习shell脚本第一个脚本编写与执行 简单的shell脚本练习简单案例脚本的执行方式差异(source、sh script、./script) 如何使用shell脚本的判断式利用test命令的测试功能利用判断符号[ ]shell脚本的默认变量($0、$1...) shell脚本的条件判断式利…

MySQL安装(Mac系统)

首先要删除本机原有的mysql 停止MySQL服务 sudo /usr/local/mysql/support-files/mysql.server stop不放心可以使用以下命令查询并杀死进程 ps aux | grep mysqld sudo kill <PID>再次尝试停止服务 sudo /usr/local/mysql/support-files/mysql.server stop卸载MySQL&…

多租户平台前端存储结构的选择

下图来源于cookie、localStorage 和 sessionStorage的区别及应用实例 既然localstorage无有效期&#xff0c;关闭浏览器还存在&#xff0c;那么用来存储用户的身份信息并不是太合适&#xff0c;先看一下B站中localstorage都存在了啥&#xff0c;原来把我搜索的记录都存在了下来…

第十二届蓝桥杯EDA省赛真题分析

前言&#xff1a; 第十二届蓝桥杯EDA比赛用的是AD软件&#xff0c;从第十四届起都是使用嘉立创EDA专业版&#xff0c;所以在这里我用嘉立创EDA专业版实现题目要求。 一、省赛第一套真题题目 主观题整套题目如下&#xff1a; 试题一&#xff1a;库文件设计&#xff08;5分&am…