本文章主要参考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环境。因为作者能力有限,可能有些步骤出现冗余或错误的情况,也请大佬随时批评指正。话不多说,我们开始吧~
当安装过程中,文件的解压过程出现错误时,可以查看是否是文章末尾所提到的注意点。
https://blog.csdn.net/hc1017/article/details/80941680?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-1
这篇文章中已经写的很清楚了,这里我就不多说了。
如果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格式。
(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
(1)运行bootstrap文件
对于图形化界面,右键打开终端。命令行界面无须任何操作。进入解压后的文件夹中:
cd cmake
运行bootstrap文件:
./bootstrap
如果没有错误可直接进行步骤(2)如果运行过程中出现以下错误,说明系统中没有安装gcc编译器。
安装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。
在http://opencv.org/releases.html下载OpenCV3.2.0安装包,下载流程与cmake下载流程相似,以下只以命令行界面为例:
(1)在windows系统中下载OpenCV3.2.0安装包
(2)进入根目录将其拖拽进根目录中,进入根目录方法:
cd /
(3)解压opencv-3.2.0.zip文件并删除压缩包:
unzip opencv-3.2.0.zip && rm -rf opencv-3.2.0.zip
安装之前确定好要安装的版本,如果安装错了在卸载,之后在安装依赖项总会有无法下载安装的问题。依次执行以下指令:
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
(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 ..
执行成功则进入下一步,如果出现以下错误:
解决方法为:
执行下面语句,进入到对应文件夹中:
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
出现版本号即安装成功
官网编译地址https://github.com/openMVG/openMVG/blob/master/BUILD.md#linux
输入
cd
指令后进入家目录
sudo apt-get install libpng-dev libjpeg-dev libtiff-dev libxxf86vm1 libxxf86vm-dev libxi-dev libxrandr-dev
如果要查看视图图形 svg 日志,安装 Graphviz:
sudo apt-get install graphviz
方法一:
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
cmake -DCMAKE_BUILD_TYPE=RELEASE ../openMVG/src/ -DOpenMVG_BUILD_TESTS=ON
sudo cmake --build . --target install
make test
ctest --output-on-failure -j
编译OpenMVS的官方文档为https://github.com/cdcseacave/openMVS/wiki/Building。编译时OpenMVS总是出现问题,这是因为有些工具的依赖版本有些老旧,所以不能完全按照官方文档进行编译。
输入
cd
进入家目录
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`
git clone https://gitlab.com/libeigen/eigen.git --branch 3.2
mkdir eigen_build && cd eigen_build
cmake . ../eigen
make && sudo make install
cd ..
sudo apt-get -y install libboost-iostreams-dev libboost-program-options-dev libboost-system-dev libboost-serialization-dev
以下指令针对于全新的系统和已经安装好OpenCV3.2.0的系统,如果不是这两种的话可能存在一些乱七八糟的错误,因为默认安装的是OpenCV2.4.9版本,版本有点老。
sudo apt-get -y install libopencv-dev
sudo apt-get -y install libcgal-dev libcgal-qt5-dev
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
(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 ..
sudo apt-get -y install freeglut3-dev libglew-dev libglfw3-dev
(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为记住的路径
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"
cd
cd openMVS_build/bin && ls
如果出现下面几个文件,则说明OpenMVS安装成功。
注:
1 文章中在解压缩文件夹时,执行命令有的使用
unzip 文件.zip -d 新的文件夹名
有的使用
unzip 文件.zip
这样做的原因是我在windows中自行将文件压缩成zip时,在linux中进行unzip,会将文件夹中的所有文件解压至当前文件夹,所以需要手动指定解压文件夹名;
而从网页中下载的zip文件,在linux中进行unzip,会直接将解压后的文件存入一个同名的文件夹中,所以我没有单独创建文件夹。为啥是这样,我也不是很清楚。
大家可以根据自己情况决定是否指定解压文件夹名。依据标准是文件解压后在linux中目录结构是这样:
而不是这样:
也不是这样:
就可以了~