IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Ubuntu20.04 编译安装视觉SLAM十四讲用到的几个库时走过的坑 -> 正文阅读

[系统运维]Ubuntu20.04 编译安装视觉SLAM十四讲用到的几个库时走过的坑

安装Eigen

由于我之前安装过Eigen,所以这里就不介绍是怎么安装的了。
Eigen的安装路径为:/usr/include/eigen3/

安装Pangolin

下载安装Pangolin时,我并没有按照书上的做法从slambook2/3rdpart/Pangolin安装,而是参照Github官网https://github.com/stevenlovegrove/Pangolin的教程:因为直接git clone下载的文件夹是一直在更新的master分支,有可能存在不稳定的测试特性,
请添加图片描述
所以我选择下载一个稳定的发布版v0.6的压缩包解压后再:

cd ~/gh-zhuoqun-chen/Pangolin-0.6
mkdir build
cd build
cmake ..
make 
sudo make install 

这样就安装好Pangolin了。

测试slambook2/ch3/examples/plotTrajectory.cpp时,发现make编译不成功,原因是中间的一行代码有问题:

string trajectory_file = "./examples/trajectory.txt";

这个相对路径报错,改为绝对路径后编译就可以正常运行了。

string trajectory_file = "/home/zqchen/Desktop/slambook2/ch3/examples/trajectory.txt";

安装Sophus

安装OpenCV

这一步坑比较多,我从OpenCV官网上下载opencv-3.1.0.zip解压后按照书上的方法先安装依赖后cmake ..报错,无法进一步接着执行make来编译,所以无法正常安装。参考了一些博客吧,我最后选择了opencv-3.4.7这个版本。

按照官网的教程:
请添加图片描述

下载opencv-3.4.7.zip解压后cmake ..执行make后仍然报错:

fatal error: Eigen/Eigenvalues: No such file or directory

参考了一篇博客ubuntu 下配置opencv3.10问题-Eigen/Eigenvalues: No such file or directory后,我是这样做的

sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_EIGEN=OFF -D CMAKE_INSTALL_PREFIX=/usr/local/opencv/3.4.7 ..

选项WITH_EIGEN是为了在编译的时候暂时忽略Eigen的相关内容
选项CMAKE_INSTALL_PREFIX是为了让opencv-3.4.7安装在/usr/local/opencv/3.4.7目录下,防止和其他版本的opencv的路径一致而导致混乱。

接下来执行

make -j4
sudo make install

就成功安装opencv-3.4.7了。

博客Ubuntu下多版本OpenCV共存和切换解释了/usr/local/opencv/3.4.7/share/OpenCV路径下OpenCVConfig.cmake文件的作用:

在OpenCV编译好后,所在目录中会生成OpenCVConfig.cmake文件,这个文件中指定了CMake要去哪里找OpenCV,其.h文件在哪里等。

存在多版本OpenCV时,需要找到所需版本对应的OpenCVConfig.cmake文件,并将其路径添加到工程的CMakeLists.txt中。

安装完后测试slambook2/ch5/imagBasics/imageBasics.cpp时又发现了问题,发现又是编译不能通过。

根据博客ubuntu20.04 18.04编译视觉SLAM十四讲slambook2/ch5/imageBasics/发现是官网的这个CMakeLists.txt少了几行内容,这几行内容在书上倒是打印出来了,文本文件里却没有:

对原来的txt进行修改:

project(imageBasics)

add_executable(imageBasics imageBasics.cpp)

# 以下三句为新添加进去的
set(CMAKE_CXX_FLAGS "-std=c++11")
# 链接OpenCV库
find_package( OpenCV REQUIRED )
#添加头文件
include_directories( ${OpenCV-INCLUDE_DIRS})

target_link_libraries(imageBasics ${OpenCV_LIBS})
 
add_executable(undistortImage undistortImage.cpp)
# 链接OpenCV库
target_link_libraries(undistortImage ${OpenCV_LIBS})

编译的步骤还是一样:进入imageBasics文件夹:

mkdir build
cd build
cmake ..
make

此处又有坑了,如果直接./imageBasics会报错:

terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_M_construct null not valid 已放弃 (核心已转储)

需要执行./imageBasics ../ubuntu.png才可以成功运行,看到出现一张图片的效果。

不知是不是我的方法有问题,我在很多篇博客里都看到可以用:

pkg-config --modversion opencv

查看OpenCV的版本,可是我就一直没看到,明天我再看看是哪里出现了问题。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-24 10:59:51  更:2021-09-24 11:00:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:29:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码