在linux下安装OpenMVG和OpenMVS

前言

本文章主要参考https://blog.csdn.net/qq_38185927/article/details/105957517所写,主要流程与该文章一致,本文以自己安装流程在其中添加了一些小细节供读者参考。https://download.csdn.net/download/qq_38185927/12394544也提供了下载OpenMVG和OpenMVS所需安装包。

本文章主要针对于新系统和小白安装openmvg和openmvs,大佬请随意~

我采用的系统是ubuntu16.04,连接云服务器的软件是xshell,连接云服务器软件的不同并不会影响整个安装过程,可能有些linux指令不同,我会在指令前表明指令的用途,小白可自行百度在自己连接云服务器软件上如何实现该功能。

作为一个小白,作者在做三维重建的任务时,探索了很久的openmvg和openmvs的安装过程,写本文章也主要想帮助小白尽快安装和配置openmvg和openmvs环境。因为作者能力有限,可能有些步骤出现冗余或错误的情况,也请大佬随时批评指正。话不多说,我们开始吧~

当安装过程中,文件的解压过程出现错误时,可以查看是否是文章末尾所提到的注意点。

1 换源

https://blog.csdn.net/hc1017/article/details/80941680?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-1

这篇文章中已经写的很清楚了,这里我就不多说了。

2 安装cmake3.8.2

2.1 下载cmake3.8.2安装包

如果linux是图形化界面系统,可直接在linux系统的网页中通过https://github.com/Kitware/CMake/releases/tag/v3.8.2网址下载cmake3.8.2安装包,在家目录(小白可自行百度家目录和根目录的概念,应该是文件夹最初打开的位置,不过这个不重要)下解压cmake3.8.2安装包,并将文件夹命名为cmake。

如果linux是命令行界面,我使用的是xshell连接云服务器,在windows系统和linux系统中传输文件比较方便,故

(1)在windows系统中打开https://github.com/Kitware/CMake/releases/tag/v3.8.2网页,下载安装包,将安装包解压后压缩成zip格式。

在linux下安装OpenMVG和OpenMVS_第1张图片

(2)将安装包从windows系统中传入linux系统,对于xshell来说,直接将文件拖拽入家目录(在命令行中输入cd回车后所在的目录即为家目录)即可,前提是已经安装了传输工具lrzsz,安装方法如下:

sudo apt-get install lrzsz

(3)将cmake-3.8.2.zip文件解压,解压前提是已经安装了解压工具unzip,安装方法如下:

sudo apt-get install unzip

     将cmake-3.8.2.zip文件解压的方法是:

unzip cmake-3.8.2.zip -d cmake

(4)删除原有压缩包

rm -rf cmake-3.8.2.zip

2.2 安装cmake

(1)运行bootstrap文件

对于图形化界面,右键打开终端。命令行界面无须任何操作。进入解压后的文件夹中:

cd cmake

运行bootstrap文件:

./bootstrap

如果没有错误可直接进行步骤(2)如果运行过程中出现以下错误,说明系统中没有安装gcc编译器。

在linux下安装OpenMVG和OpenMVS_第2张图片

 安装gcc编译器的方法如下:

sudo apt-get install g++

再次执行

./bootstrap

bootstrap文件

(2)安装cmake

make
sudo make install

(3)检查版本

cmake --version

 出现下面版本号说明cmake安装成功。

如果出现其他版本号,说明之前已经安装过一个cmake,这里值得注意的是cmake的版本不能太低,否则后序会出现不可控的错误。 更改cmake版本方法参考https://blog.csdn.net/qq_38185927/article/details/105957517

3 安装OpenCV3.2.0

3.1 下载OpenCV3.2.0安装包

http://opencv.org/releases.html下载OpenCV3.2.0安装包,下载流程与cmake下载流程相似,以下只以命令行界面为例:

(1)在windows系统中下载OpenCV3.2.0安装包

在linux下安装OpenMVG和OpenMVS_第3张图片

 (2)进入根目录将其拖拽进根目录中,进入根目录方法:

cd /

(3)解压opencv-3.2.0.zip文件并删除压缩包:

unzip opencv-3.2.0.zip && rm -rf opencv-3.2.0.zip

3.2 安装依赖库

安装之前确定好要安装的版本,如果安装错了在卸载,之后在安装依赖项总会有无法下载安装的问题。依次执行以下指令:

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-get install --assume-yes libopencv-dev libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip
 
sudo apt-get install ffmpeg libopencv-dev libgtk-3-dev python-numpy python3-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libv4l-dev libtbb-dev qtbase5-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev
 
sudo apt-get install libgtk-3-dev
 
sudo apt-get -y install libgstreamer-plugins-base1.0-dev
 
sudo apt-get -y install libgstreamer1.0-dev
 
sudo apt-get -y install libavresample-dev
 
sudo apt-get -y install libgphoto2-dev
 
sudo apt-get install libopenblas-dev
 
sudo apt-get install doxygen

3.3 安装OpenCV

(1)进入opencv-3.2.0文件并创建build文件夹

cd opencv-3.2.0
mkdir build && cd build

(2)cmake文件

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler ..

执行成功则进入下一步,如果出现以下错误:

在linux下安装OpenMVG和OpenMVS_第4张图片

解决方法为:

 执行下面语句,进入到对应文件夹中:

cd /opencv-3.2.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/

删除该文件夹下的压缩包

rm -rf ippicv_linux_20151201.tgz

https://raw.githubusercontent.com/Itseez/opencv_3rdparty/81a676001ca8075ada498583e4166079e5744668/ippicv/ippicv_linux_20151201.tgz链接中下载对应压缩包,如果网页挂了则在文章开头的https://download.csdn.net/download/qq_38185927/12394544下载

下载完成后,将下载到的文件ippicv_linux_20151201.tgz拖拽入linux中。

删除完成后将build文件夹删除并重新运行cmake:

cd /opencv-3.2.0/
rm -rf build
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler ..

(3)make文件

sudo make -j12

执行成功则进入下一步,如果出现以下错误:

fatal error: LAPACKE_H_PATH-NOTFOUND/lapacke.h: No such file or directory #include “LAPACKE_H_PATH-NOTFOUND/lapacke.h”

解决方法:

sudo apt-get install liblapacke-dev checkinstall

并修改opencv-3.2.0/build/opencv_lapack.h:

cd /opencv-3.2.0/build/opencv_lapack.h

#include"LAPACKE_H_PATH-NOTFOUND/lapacke.h"

改为:

#include"lapacke.h"

并重新运行

cd /opencv-3.2.0/build
sudo make -j12

(4)安装

sudo make install

(5)检查版本

pkg-config --modversion opencv

出现版本号即安装成功

 4 编译OpenMVG

官网编译地址https://github.com/openMVG/openMVG/blob/master/BUILD.md#linux

输入

cd

指令后进入家目录

4.1 安装所需的外部库

sudo apt-get install libpng-dev libjpeg-dev libtiff-dev libxxf86vm1 libxxf86vm-dev libxi-dev libxrandr-dev

如果要查看视图图形 svg 日志,安装 Graphviz:

sudo apt-get install graphviz

4.2 下载OpenMVG

方法一:

git clone --recursive https://github.com/openMVG/openMVG.git
mkdir openMVG_Build && cd openMVG_Build

第一行指令比较依赖于网络,网络质量不好或者网络突然中断,会出现以下类似错误,请删掉openMVG文件重新下载。

出现以下错误之一或其他错误:

删除文件:

cd
rm -rf openMVG

 重新下载:

git clone --recursive https://github.com/openMVG/openMVG.git
mkdir openMVG_Build && cd openMVG_Build

方法二:

下载该链接https://download.csdn.net/download/qq_38185927/12394544中的文件,解压文件,将openMVG文件压缩成zip格式。

将openMVG.zip文件拖拽入xshell中,对文件进行解压缩并删除压缩包

unzip openMVG.zip -d openMVG && rm -rf openMVG.zip

在家目录中创建openMVG_Build文件并进入:

mkdir openMVG_Build && cd openMVG_Build

4.3 配置和build

cmake -DCMAKE_BUILD_TYPE=RELEASE ../openMVG/src/ -DOpenMVG_BUILD_TESTS=ON
sudo cmake --build . --target install

make test
ctest --output-on-failure -j

5 编译OpenMVS

编译OpenMVS的官方文档为https://github.com/cdcseacave/openMVS/wiki/Building。编译时OpenMVS总是出现问题,这是因为有些工具的依赖版本有些老旧,所以不能完全按照官方文档进行编译。

输入

cd

进入家目录

5.1 Prepare and empty machine for building  

sudo apt-get update -qq && sudo apt-get install -qq
sudo apt-get -y install git cmake libpng-dev libjpeg-dev libtiff-dev libglu1-mesa-dev
main_path=`pwd`

5.2 Eigen(必要)

git clone https://gitlab.com/libeigen/eigen.git --branch 3.2
mkdir eigen_build && cd eigen_build
cmake . ../eigen
make && sudo make install
cd ..

5.3 Boost(必要)

sudo apt-get -y install libboost-iostreams-dev libboost-program-options-dev libboost-system-dev libboost-serialization-dev

5.4 OpenCV(必要)

以下指令针对于全新的系统和已经安装好OpenCV3.2.0的系统,如果不是这两种的话可能存在一些乱七八糟的错误,因为默认安装的是OpenCV2.4.9版本,版本有点老。

sudo apt-get -y install libopencv-dev

5.5 CGAL(必要)

sudo apt-get -y install libcgal-dev libcgal-qt5-dev

5.6 VCGLib(必要)

git clone https://github.com/cdcseacave/VCG.git vcglib

执行成功则进行下一步,如果出现以下错误:

fatal: unable to access 'https://github.com/cdcseacave/VCG.git/': GnuTLS recv error (-54): Error in the pull function.

解决方法:

git clone git://github.com/cdcseacave/VCG.git vcglib

5.7 Ceres(可选)

(1)

sudo apt-get -y install libatlas-base-dev libsuitesparse-dev
git clone https://ceres-solver.googlesource.com/ceres-solver ceres-solver

执行成功则进入第(2)步,如果Ceres网站失效,反复出现以下情况:

在windows下下载该链接https://download.csdn.net/download/qq_38185927/12394544中的文件,在家目录下创建ceres-solver文件,将windows中下载的ceres-solver-1.14.0文件夹中的文件存入ceres-solver文件中,传输方法如OpenMVG编译中的方法二。

(2)

cd
mkdir ceres_build && cd ceres_build
cmake . ../ceres-solver/ -DMINIGLOG=ON -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF
make -j2 && sudo make install
cd ..

5.8 GLFW3(可选)

sudo apt-get -y install freeglut3-dev libglew-dev libglfw3-dev

5.9 OpenMVS

(1)

方法一:

git clone https://github.com/cdcseacave/openMVS.git openMVS

与下载OpenMVG一样,这一步也比较依赖于网络质量,如果网络不好的话将openMVS文件删除后重新执行该步指令,删除openMVS文件的指令为:

rm -rf openMVS

方法二:同OpenMVG方法二一样,可以在windows系统中在https://download.csdn.net/download/qq_38185927/12394544中下载文件,在linux家目录中创建openMVS文件夹,并将windows中openMVS文件夹中文件传输至openMVS文件夹中,传输方法参考OpenMVG方法二。

(2)

cd
mkdir openMVS_build && cd openMVS_build
cmake . ../openMVS -DCMAKE_BUILD_TYPE=Release -DVCG_ROOT="$main_path/vcglib" -DBUILD_SHARED_LIBS=ON

注意:

 这里的main_path是5.1中的最后一个指令

故,这里要求从5.1至5.10安装过程不能中断 ,即不能重新连接云服务器,如果安装被迫中断,则

rm -rf ./*
cd
main_path='pwd'
cd openMVS_build

重新运行

cmake . ../openMVS -DCMAKE_BUILD_TYPE=Release -DVCG_ROOT="$main_path/vcglib" -DBUILD_SHARED_LIBS=ON

如果还不能正确执行,则

rm -rf ./*
cd
pwd
记住该路径,我的输出的路径为:/root
cd openMVS_build
cmake . ../openMVS -DCMAKE_BUILD_TYPE=Release -DVCG_ROOT="/root/vcglib" -DBUILD_SHARED_LIBS=ON

其中/root为记住的路径

5.10 OpenMVS library(必要)

make -j2 && sudo make install

如果安装时出现问题,或者make一直卡住,是因为上一步加了这句话:DBUILD_SHARED_LIBS=ON,可能因为boost版本太低了,删掉openMVS_build文件夹中文件并重新执行上一步的cmake即可。

rm -rf ./*
cmake . ../openMVS -DCMAKE_BUILD_TYPE=Release -DVCG_ROOT="$main_path/vcglib"

5.11 检验OpenMVS是否安装成功

cd
cd openMVS_build/bin && ls

如果出现下面几个文件,则说明OpenMVS安装成功。

注:

1 文章中在解压缩文件夹时,执行命令有的使用

unzip 文件.zip -d 新的文件夹名

有的使用

unzip 文件.zip

这样做的原因是我在windows中自行将文件压缩成zip时,在linux中进行unzip,会将文件夹中的所有文件解压至当前文件夹,所以需要手动指定解压文件夹名;

而从网页中下载的zip文件,在linux中进行unzip,会直接将解压后的文件存入一个同名的文件夹中,所以我没有单独创建文件夹。为啥是这样,我也不是很清楚。

大家可以根据自己情况决定是否指定解压文件夹名。依据标准是文件解压后在linux中目录结构是这样:

在linux下安装OpenMVG和OpenMVS_第5张图片

而不是这样:

在linux下安装OpenMVG和OpenMVS_第6张图片

 也不是这样:

在linux下安装OpenMVG和OpenMVS_第7张图片

 就可以了~

你可能感兴趣的:(openmvg,openmvs,linux,openmvg,openmvs)