当前位置: 首页 > news >正文

ubuntu20.04配置OpenCV的C++环境

ubuntu20.04配置OpenCV的C++环境

这里以opencv-3.4.16为例
复现https://github.com/raulmur/ORB_SLAM2此项目,需安装opencv及其他依赖,可见README.md详情

1.下载opencv源代码

https://opencv.org/releases/

2.下载OpenCV的扩展包opencv_contrib,需下载opencv对应版本

https://github.com/opencv/opencv_contrib

3.添加依赖项目,依次执行:

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
sudo apt install cmake-qt-gui

如果在执行第三个命令时提示“Unable to locate package libjasper-dev”,应该是下载源的问题。解决方法如下:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update

然后再执行一遍添加依赖项目中的第三行指令,即可成功安装。

4.安装

1、在opencv-3.4.16文件夹中新建文件,命名为build;打开build文件夹,在终端中执行以下命令(最好在build文件下打开终端执行,并且如果多次执行下面cmake指令可能出现问题,解决方法就是直接将解压得到opencv文件夹删除,重新解压和安装):

sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

2、执行这一步时,如果一直卡在“IPPICV:Download:ippicv_2019_Inx_intel64…”上,这是因为下载很慢的原因,可以手动下载:

根据opencv版本下载,opencv-3.4.16/3rdparty/ippicv/ippicv.cmake查看版本

需要下载的版本是20191018,https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20191018/ippicv

根据实际情况下载对应文件,如ippicv_2020_lnx_intel64_20191018_general.tgz

3、之后修改opencv-3.4.16/3rdparty/ippicv/ippicv.cmake文件的下载地址改为本地路径,下图中链接改成文件路径 “file:///home/…”(ippicv文件的下载地址)

4、修改好ippicv路径之后,运行以下指令进行编译:

sudo make -j8

5、进行安装

sudo make install

5.安装好后,添加路径

终端输入:

sudo gedit /etc/ld.so.conf

在打开的文件中添加:

/usr/local/lib

保存之后,终端再输入:

sudo ldconfig

6.配置环境

终端输入:

sudo gedit /etc/bash.bashrc 

在打开的文件最下方添加:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

保存关闭文件,最后在终端输入以下指令:

source /etc/bash.bashrc

之后就可以查看我们安装opencv的版本了

pkg-config opencv --modversion

7.测试

在opencv-3.4.16/samples/cpp/example_cmake文件夹下打开终端,依次输入以下指令:

cmake .
make
./opencv_example

有摄像头的话就会打开摄像头出现画面;如果没有摄像头,最后会出现黑屏幕与Hello Opencv几个大字。到此,安装完成。
Hello OpenCV

相关文章:

  • 深度学习之基于YoloV3杂草识别系统
  • GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件
  • 操作系统 应用题 例题+参考答案(考研真题)
  • 【Ambari】HDFS基于Ambari的常规运维
  • 基于C#实现赫夫曼树
  • ②⑩② 【读写分离】Sharding - JDBC 实现 MySQL读写分离[SpringBoot框架]
  • Mysql并发时常见的死锁及解决方法
  • 【RTP】RTPSenderAudio::SendAudio
  • .Net6使用WebSocket与前端进行通信
  • C++类与对象(5)—流运算符重载、const、取地址
  • 通俗理解词向量模型,预训练模型,Transfomer,Bert和GPT的发展脉络和如何实践
  • 二叉树详讲(一)---完全二叉树、满二叉树、堆
  • Qt 串口编程-从入门到实战
  • flink的异常concurrent.TimeoutException: Heartbeat of TaskManager with id的解决
  • 河南省第五届“金盾信安杯”网络与数据安全大赛实操技能赛 部分wp(自己的一些思路和解析 )(主misc crypto )
  • @jsonView过滤属性
  • [译] 怎样写一个基础的编译器
  • 78. Subsets
  • Cookie 在前端中的实践
  • DataBase in Android
  • docker-consul
  • docker容器内的网络抓包
  • IOS评论框不贴底(ios12新bug)
  • JavaScript学习总结——原型
  • JAVA之继承和多态
  • mysql外键的使用
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Vue.js 移动端适配之 vw 解决方案
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 智能合约开发环境搭建及Hello World合约
  • linux 淘宝开源监控工具tsar
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • # Panda3d 碰撞检测系统介绍
  • #android不同版本废弃api,新api。
  • #图像处理
  • (ZT)出版业改革:该死的死,该生的生
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (篇九)MySQL常用内置函数
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • . Flume面试题
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .gitignore
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET Core 版本不支持的问题
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • [ JavaScript ] JSON方法
  • [100天算法】-x 的平方根(day 61)
  • [AutoSar NVM] 存储架构