1、准备阶段
一、开发环境的准备
1、编程环境为ubuntu 14.04 64bit;
2、Opencv的安装
1)使用从源代码安装的模式, 安装的版本号为opencv-2.4.12,其下载地址为http://opencv.org/downloads.html
2)安装依赖项,如下
sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev
3)解压下载的OpenCV目录,然后进行编译和安装
mkdir build
cd build
cmake ..
make
sudo make install
安装后的头文件位置位于
安装后的库文件位于
备注:Linux下的c++编译工具抽象程度的递增,g++,makefile,cmake。
3、PCL(Point cloud library)的安装
由于深度相机采集的数据就是点云数据,PCL的官网地址为http://pointclouds.org;
针对14.04及以下的版本安装方式,需要私有源来安装(注意不同网络可能导致安装不同)
1 sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
2 sudo apt-get update
3 sudo apt-get install libpcl-all
由于在16.04当中,PCL库已经在公有源当中,采用直接安装
sudo apt-get install libpcl-dev pcl-tools
注意,在16.04当中PCL的配置似乎有bug,需要在cmakelist中添加一条指令修复。
头文件位于
库文件暂未找到??
二、编写一个测试程序
首先,构建一个CMake项目,在Linux下的CMake项目通常由几个文件夹组成,如下
假设根文件夹是RGB-D_SLAM,
里面的子文件夹目录
bin目录:存放生成的二进制可执行程序;
src目录:源代码存放目录;
include目录:头文件存放目录;
lib目录:存放编译好的库文件目录;
有了以上目录,那么通过CMakeLists.txt文件把目录结构告诉cmake工程,因为cmake在生成代码时,会去读取这个文件,并按照它里面的格式来编译你的代码,所有要
touch CMakeLists.txt
并写入如下内容:
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 ) #设定版本
PROJECT( slam ) #设定工程名
SET(CMAKE_CXX_COMPILER "g++") #设定编译器
#设定可执行二进制文件的目录
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
#设定存放编译出来的库文件的目录
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
#把库文件目录作为连接目录
LINK_DIRECTORIES( ${PROJECT_SOURCE_DIR}/lib)
#设定头文件目录
INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/include )
#增加子文件夹,也就是进入源代码文件夹继续构建
ADD_SUBDIRECTORY( ${PROJECT_SOURCE_DIR}/src )
备注:可以学习CMake实践电子书
注意库文件和二进制的区别和联系:二进制就是可以直接运行的程序啦,库文件呢,就是为这些二进制提供函数的啦。有main函数的代码可以编译成二进制,其他的则编译成库文件。链接时,把库文件链到二进制上,就可以运行。
下面实例联系:
在src目录下新建一个文件main.cpp
下面要把这个源代码生成一个二进制文件,则在src目录下新建一个文件CMakeLists.txt
然后,回到根目录下,执行如下操作
1 mkdir build 2 cd build 3 cmake .. 4 make
编译通过就会在bin目录下生成一个二进制文件。
这一课的主要目的就是为了熟悉Linux下CMake项目的建立,以及OpenCV和PCL环境的建立。
总结:
CMakeLists.txt文件,把可执行文件的生成放在src目录下
主函数要调用该库文件,需要新建一个头文件,然后在主函数文件里面通过#include来包含该头文件即可调用自己制作的库文件