2022.9.26 bionic

一.安装

1.opencv安装

我这里提供3.4.1版本

自取放到ubuntu中,解压

链接:https://pan.baidu.com/s/1M6QUGGHJDwvDlizLZg-_xw 
提取码:xaya

当然了你去官网可以安装新的版本

https://opencv.org/releases/

不过我这里是按照3.4.1的安装的

1.1安装依赖项

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

如果出现E: 无法定位软件包 libjasper-dev问题,执行一下指令

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

1.2 编译

cd opencv-3.4.1/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release –D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make
sudo make install

这里就不过多介绍了,很简单

1.3 配置环境

sudo gedit /etc/ld.so.conf.d/opencv.conf 

在opencv.conf 中添加如下内容

/usr/local/lib  

然后使刚配置路径生效

sudo ldconfig  

打开bash文件,配置bash

sudo gedit /etc/bash.bashrc

在打开的bash.bashrc的最末尾添加如下代码

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

保存关闭文件,使刚才的配置生效

source /etc/bash.bashrc  

1.4 到这个地方,opencv安装完成

常见问题:

正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
注意,根据正则表达式 'libjpeg.dev' 选中了 'libjpeg-dev'
注意,根据正则表达式 'libtiff5.dev' 选中了 'libtiff5-dev'
E: 无法定位软件包 libjasper-dev

解决:

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

2.PCL点云依赖项安装

该项目需要pcl库,一般安装电脑都会自带pcl1.8版本的,但是会缺少一些库文件,我是参考第5讲 相机与图像,执行命令:

sudo apt install libpcl-dev pcl-tools

二.实现(根据SLAMBOOK2)

1. imageBasics

1.1修改Cmakelist

因为和distorded一个文件夹所以只需要修改一次cmake,到distorded实现就不用了

CMakeLists:

project(imageBasics)

cmake_minimum_required(VERSION 3.10)

add_executable(imageBasics imageBasics.cpp)

# 链接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})

set(CMAKE_CXX_FLAGS "-std=c++11")  
 

cpp文件不需要修改,因为不需要改路径

1.2 实现

mkdir build
cd build
cmake ..
make

这里有手就行。

make完成后,在build终端里

执行命令为

./imageBasics ../ubuntu.png

实现图片如下:

2. undistortImage

2.1修改cpp

/home/zhangyuanbo/Slam14_2/ch5/imageBasics/distorted.png

主要是这句话一定要修改,不然会一遍又一遍报opencv的错误!!!!也就是distorted图片的位置

可以进入终端

pwd

把地址复制粘贴到png前面

我这里打开文件使用的是vim
任意位置按o编辑,按两次esc键退出编辑模式,再按:wq保存退出


cmake不用改(上面说过)

2.2 实现:

./undistortImage ../distorted.png

左边是畸变的,右边是处理后非畸变的

3. stereo

3.1 编辑cmake文件

project(stereo)
find_package(Pangolin REQUIRED)
add_executable(stereoVision stereoVision.cpp)
cmake_minimum_required(VERSION 3.10)
# 链接OpenCV库
find_package( OpenCV REQUIRED )
#添加头文件
include_directories( ${OpenCV_INCLUDE_DIRS})
target_link_libraries(stereoVision ${OpenCV_LIBS})
# 链接OpenCV库
target_link_libraries(stereoVision ${OpenCV_LIBS} ${Pangolin_LIBRARIES})
set(CMAKE_CXX_FLAGS "-std=c++14")  

3.2 编辑cpp文件

// 文件路径
string left_file = "../left.png";

string right_file = "../right.png";

这里一样一定要改成我这样的,不然编译opencv疯狂报错,如果已经报错了请删掉build,改完重新编译

3.3 运行

mkdir build
cd build
cmake ..
make

./stereoVision

4 RGB_D

4.1 修改cmake文件

cmake_minimum_required(VERSION 2.8)
project(joinMap)

set( CMAKE_BUILD_TYPE Release )

set( CMAKE_CXX_FLAGS "-std=c++11 -O3")

# 包含opencv库

find_package( OpenCV REQUIRED)

include_directories( ${OpenCV_INCLUDE_DIRS})

#包含eigen库

find_package( Eigen3 REQUIRED)

include_directories( "/usr/include/eigen3/" )

#pangolin

find_package(Pangolin)

include_directories( ${Pangolin_INCLUDE_DIRS} )

#Sophus

find_package(Sophus)

include_directories( "/usr/include/sophus/" )

#包含pcl库

find_package( PCL REQUIRED  common io)

include_directories( ${PCL_INCLUDE_DIRS})

add_definitions( ${PCL_DEFINITIONS})

list(REMOVE_ITEM PCL_LIBRARIES "vtkproj4")

LINK_LIBRARIES(${PCL_LIBRARY_DIRS})

add_executable(joinMap joinMap.cpp)

target_link_libraries(joinMap ${OpenCV_LIBS} ${PCL_LIBRARIES} ${Pangolin_LIBRARIES} ${Sophus_LIBRARIES})

install(TARGETS joinMap RUNTIME DESTINATION bin)
 

4.2 修改cpp文件

1 pose.txt要绝对路径,和之前一样操作就行


2 图像文件格式需要定位到rgbd目录

两者缺一不可,缺了就opencv疯狂报错,到头来还得看我这里!

4.3实现

build中

./joinMap

文章知识点与官方知识档案匹配,可进一步学习相关知识