UAV代码环境配置说明:
由于在代码中使用了很多开源的库文件,其中有一些库配置起来还比较麻烦所以我打算做一个环境配置的详细说明,WTK,想想就是一件
很麻烦但是又不得不去做的事情,做开源很多时候都是这样,为了一点小小的成就感,当然如果可能也为了服务大家,就需要忍受无穷无尽
的麻烦,不过其中的快乐也不足为外人道了,好了,废话不多说讲讲各种库文件的配置:

GDAL库的配置:

这个简直都不想说,因为已经编译配置过一百遍,不过鉴于有很多朋友对linux系统不太了解,所以我这里还是稍微提一提

GDAL库的获取

GDAL库获取的方式有很多种,一般来说在linux下都是网上下载源码然后编译,源码下载的网址为: https://github.com/OSGeo/gdal
,如果有Git的话直接在需要获取的文件夹下git clone https://github.com/OSGeo/gdal.git 就可以将源码clone下来了。

GDAL库的编译和安装

一般来说开源的库文件都是通过makefile或者是cmake文件编译的,在linux下是可以很轻松的进行编译的,不过在编译过程中有几个小地方要注意,那就是配置文件
GDAL有很多可选的依赖项,如果要一起编译就一起下载下载然后在配置文件中修改路径为依赖文件源码路径就可以了,然后cmake编译,最后make和
make install完成库的安装,ubuntu的用户库一般在目录/usr/loca/lib 下,安装完成后到/usr/local/include下找到include文件,在/usr/loca/lib
文件夹下找到.so文件就说明编译安装成功了,GDAL库的获取和安装目前来说是最简单的了。

OpenMVG库的配置

OpenMVG库的获取

其实获取库倒是没有什么可以提的,一般开源库都能够在Github中获取到,但是我还是给出地址吧,https://github.com/openMVG/openMVG, 这个是github的主页
同样在有Git的情况下我们通过git clone https://github.com/openMVG/openMVG.git 命令获取源码。

OpenMVG库的编译

相比于GDAL库来说OpenMVG库的编译显得稍微复杂一点点,不过其实也还好,在windows下编译可能比较麻烦,不过在linux下嘛,其实也比较简单,下面详细
介绍一下openMVG库的编译过程,在获取了openMVG库之后实际上源码中包含了cmake文件,如果我们只是需要编译库,并不需要编译单元测试和sample的话
编译过程为:

$ git clone –recursive https://github.com/openMVG/openMVG.git
$ cd openMVG
$ ls
$ cd ..
$ mkdir openMVG_Build
$ cd openMVG_Build
$ cmake -DCMAKE_BUILD_TYPE=RELEASE . ../openMVG/src/
$ make && make install

详细介绍一下以上每个步骤,首先是通过git获取源码,然后进入的源码的目录中查看一下源码中有哪些文件,这两个步骤倒是可以省略,然后创建一个编译目录
如果你不想源码和编译文件混在一起最好创建一个编译目录,然后进去编译目录通过cmake指定源码目录进行编译,cmake处理完成之后会得到一个makefile文件
然后对makefile文件进行编译就行了,由于openMVG依赖库比较多,所以使用的时候也比较复杂,不过编译不需要管这么多,使用的时候参考我代码中的cmakelist.txt
就可以看懂了。

opeMVS库的配置

因为有这个库的存在,所以其实不建议在windows下用,openMVS在win下编译简直不能更麻烦了,如果一定要折腾其实也可以,不过我没有编译成功过,所以也不太了解

openMVS库的获取

说到开源库的获取其实第一感觉就是github上有没有,然后去一搜,应该就是果然有,而且是最新版的所以多去github上看看也是个不错的选择,同样是
通过命令git clone https://github.com/cdcseacave/openMVS.git 可以获取其源码,这个就不多说了。

openMVS库的编译

从的编译说明来看似乎win下的编译要简单,实际上依赖库太多太麻烦,编译起来很费事,所以linux下编译看起来很麻烦其实是比较简单的

Prepare and empty machine for building:
sudo apt-get update -qq && sudo apt-get install -qq
sudo apt-get -y install build-essential git mercurial cmake libpng-dev libjpeg-dev libtiff-dev libglu1-mesa-dev
main_path=pwd

Eigen (Required)
git clone https://bitbucket.org/eigen/eigen#3.2
mkdir eigen_build && cd eigen_build
cmake . ../eigen
make && sudo make install
cd ..

Boost (Required)
sudo apt-get -y install libboost-iostreams-dev libboost-program-options-dev libboost-system-dev libboost-serialization-dev

OpenCV (Required)
sudo apt-get -y install libopencv-dev

CGAL (Required)
sudo apt-get -y install libcgal-dev libcgal-qt5-dev

VCGLib (Required)
git clone https://github.com/cdcseacave/VCG.git vcglib

Ceres (Required)
sudo apt-get -y install libatlas-base-dev libsuitesparse-dev
git clone https://ceres-solver.googlesource.com/ceres-solver ceres-solver
mkdir ceres_build && cd ceres_build
cmake . ../ceres-solver/ -DMINIGLOG=ON -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF
make -j2 && sudo make install
cd ..

GLFW3 (Optional)
sudo apt-get -y install freeglut3-dev libglew-dev libglfw3-dev

OpenMVS
git clone https://github.com/cdcseacave/openMVS.git openMVS
mkdir openMVS_build && cd openMVS_build
cmake . ../openMVS -DCMAKE_BUILD_TYPE=Release -DVCG_DIR=”$main_path/vcglib”

If you want to use OpenMVS as shared library, add to the CMake command:
-DBUILD_SHARED_LIBS=ON

Install OpenMVS library (optional):
make -j2 && sudo make install

其实上面的介绍已经很详细了,编译的库包括Eigen,Boost,OpenCV,CGAL,VCGLib Ceres,GLFW3,看起来有很多,实际上因为我们在编译openMVG的
过程中已经得到了Eigen和Ceres,所以这两个是省下来了,另外其他的库按照它的提示编译其实也很简单,编译之后用法也跟openMVG一样,在这里也就不啰嗦了

SIFTGPU的编译

讲完了几个在linux下原生开发的库,下面来说说这个在win下原生开发的库,由于源码是在win下用vs开发的,所以它的编译就显得稍微麻烦一点点,不过也
可以接受,在我的代码中并不是将siftgpu编译成库使用,而是直接讲它的源码链接到我的源码中使用,在使用过程了有两点要注意,首先就是依赖库,它依赖
包括glew和devil两个库,这两个库在网上也能够下载到源码,然后直接编译或者通过apt-get install编译安装就好了,另外就是链接,在我的cmakelist文件
中添加了siftgpu的cmakelist文件,然后进行链接,这个具体在代码中可以看,所以实际要做的也就是安装glew和devil库,相对来说也比较简单。

将以上所有库都安装编译完成后直接cmake就可以对源码进行编译,然后make生成可执行程序,同时也可以对代码进行修改和调试了。P.S.源码地址为:https://github.com/RemoteSensingFrank/UAVProduct