写在最前面,本blog只有文字部分,如果读者需要带有截图的版本请到以下地址下载:http://download.csdn.net/detail/mitsubishisony/9614244
配置之前需要特别注意的地方。
1)假如你在机器上装了CUDA,那么OpenCV、OpenMVG和OpenMVS中都不要用,要把WITH_CUDA、BUILD_CUDA_LIB、OpenMVS_USE_CUDA之类的取消,因为即使是最新的CUDA7.5也不支持VS2015,目前支持的VS2015的只有CUDA 8.0且还处于RC版本,因此作者也没有尝试其可用性。如果你使用的是VS2013或更早之前版本的VS,可以考虑安装CUDA,并在cmake中勾选相应的选项。。
2)整个过程中,只有OpenCV,GoogleFlags可以配置成动态库,其余均为静态。即,OpenCV,GoogleFlags中BUILD_SHARED_LIBS需要勾选,其余的出现SHARED_LIB都不能勾选。
3)VS2015有一个已知bug,在Update1中其实也没有解决,假如你在编译OpenMVS的时候出现了internal error C1001,那么恭喜你,你也碰到了。解决方法[3]是:
修改Eigen中generalmatrixmatrix.h第144行(Eigen3.2.7是在这一行,其他版本自行定位)
“--(info[j].users)”改成“info[j].users-=1”。
OPENMVS所需要的所有库,以及本文所使用库的版本
OpenCV(2.4以上)3.1 |
|
VCG 1.0.0 |
|
CGAL (4.2以上)4.8.1 |
Boost 1.61.0 |
QT 5.7.0 |
|
LibQGLViewer 2.6.3 |
|
Ceres |
Eigen (3.2以上) 3.2.9 |
Google Log 0.3.3 |
|
Google Flags 2.1.2 |
|
CXSParse 3.1.1 |
|
Cmake 3.6.0 |
|
OpenMVG |
Git |
GCC (4.7以上)5.4.1 |
|
OpenMVS |
文件夹设置:本文在C盘新建一个openMVS的文件夹,其中所需要的各个软件库均以子文件夹的形式在openMVS这个文件夹下进行存储,除此之外在该文件夹下新建2个子文件夹,分别命名为src和build。src文件夹用于存放openMVS的源代码,build用于存放所有相关软件库的生成文件。
一、配置OpenCV
1.网上下载的openCV一般为exe格式,如图所示 ,双击运行,设置安装路径为openMVS/openCV下,然后进行安装。安装后会有2个文件夹,一个sources文件夹,一个build文件夹。本文只用sources文件夹
2.打开cmake软件中的cmake-gui文件,sorce code设置为openCV文件夹里的src子文件夹即openMVS/openCV/sources,build设置为openMVS/build/openCV,详见图,然后点击Configure,并选择相应的编译平台。本文选择Visual Studio 142015 Win64
3.取消BUILD_WITH_STATIC_CRT、BUILD_PERF_TESTS、BUILD_TESTS以及所有包含CUDA项
4.勾选BUILD_SHARED_LIBS,然后再点击Configure,之后点击Generate
5.找到openMVS/build/openCV文件夹中的sln文件,用VS2015打开,分别在Debug和Release模式下进行编译。之后关掉VS2015,在开始菜单中,找到VS2015程序,右键以管理员身份运行,在打开的VS2015的窗口中重新打开刚才的OpenCV.sln文件,在项目列表里找到INSTALL项目,仅对该项目进行编译,并在Debug和Release两种模式下都分别进行编译,如图
二、Eigen文件直接存储在openMVS/Eigen文件夹下,如图所示
三、VCG文件也直接存储在openMVS/VCG文件夹下,如图所示
四、配置Boost
1.Boost文件下载的时候,注意选择相应的编译平台,32/64位和版本,本文用的1.61.0版本,用于VS2015,64位的安装版本,如图所示 。将Boost文件安装在openMVS/Boost文件夹下,安装后,在安装文件夹下,找到bootstrap.bat文件,双击运行
2.完成后,在openMVG\src文件夹内寻找zlib文件夹,复制这个路径
打开开始菜单中VS2015文件夹中的VS2015 x64本机工具命令提示符工具,并定位到Boost文件夹内,然后输入bjam stage --with-system --with-thread --with-iostreams --with-program_options --with-serialization --with-date_time -sZLIB_SOURCE=/*openMVG中zlib的文件夹路径*/ address-model=64 link=static runtime-link=shared threading=multi debug release
其中/*openMVG中zlib的文件夹路径*/替换为上一步复制的zlib文件夹路径,用于本次的话就是
bjam stage --with-system --with-thread --with-iostreams --with-program_options --with-serialization --with-date_time -sZLIB_SOURCE=C:\openMVS\openMVG\src\third_party\zlib address-model=64 link=static runtime-link=shared threading=multi debug release
然后按回车运行,如图所示。注意SOURCE=后面不要有空格。
五、QT安装
安装在c盘默认路径就可以,安装选项默认即可
把QT的安装路径加入到环境变量path里,针对于本文就是C:\Qt\Qt5.7.0,把这个路径加入到环境变量的path里,如图所示
六、配置CGAL
1.首先添加3个环境变量,如图所示
BOOST_LIBRARYDIR= C:\openMVS\Boost\lib64-msvc-14.0
BOOST_INCLUDEDIR= C:\openMVS\Boost
QTDIR= C:\Qt\Qt5.7.0
2.将以下2个路径添加到环境变量的path里: C:\openMVS\Boost\lib64-msvc-14.0
C:\Qt\Qt5.7.0\5.7\msvc2015_64\bin
3.将libQGLViewer文件复制到openMVS/libQGLViewer文件夹内
打开开始菜单中VS2015文件夹中的VS2015 x64本机工具命令提示符工具,并定位到libQGLViewer/QGLViewer子文件夹下
4.输入qmake.exe然后回车
5.输入nmake然后回车
6.将以下路径添加到环境变量的path中:C:\openMVS\libQGLViewer\QGLViewer
7.在环境变量中添加以下变量:QGLVIEWERROOT= C:\openMVS\libQGLViewer
8.安装CGAL文件,如图所示 ,双击进行安装,安装过程中选择64-bits,安装目录到C:\openMVS\CGAL,
用户选择的地方选择All users,并勾选CGAL_DIR。
9.根据提示需要把相应的路径添加到环境变量的path中,如下所示
10.打开cmake-gui,进行如下设置
11.勾选CGAL_Boost_USE_STATIC_LIBS,取消BUILD_SHARED_LIBS
然后点Configure,
12.一般会报错,点击Add Entry添加一个参数 , 如果没有相应的选项,则也通过Add Entry的方式进行添加
Name:CGAL_Boost_USE_STATIC_LIBS,Type:BOOL,Value:打钩
Name:BOOST_INCLUDE_DIR,Type:Path,Value:C:\openMVS\Boost\lib64-msvc-14.0。点击OK后,再点击Configure再点Generate
13.找到openMVS/build/CGAL文件夹中的sln文件,用VS2015打开,分别在Debug和Release模式下进行编译。之后关掉VS2015,在开始菜单中,找到VS2015程序,右键以管理员身份运行,在打开的VS2015的窗口中重新打开刚才的CGAL.sln文件,在项目列表里找到INSTALL项目,仅对该项目进行编译,并在Debug和Release两种模式下都分别进行编译。最后把以下路径添加到环境变量path中:C:\openMVS\build\Cgal\bin
14.最后将openMVS/CGAL/auxiliary文件夹拷至C:/Program Files/CGAL下,把openMVS/CGAL/auxiliary/gmp/include文件夹下的3个.h文件分别拷到C:\ProgramFiles\CGAL\include\CGAL\GMP和C:\ProgramFiles\CGAL\include\CGAL\internal\auxiliary下。
七、配置CXSparse
将文件复制到openMVS/CXSparse文件夹下
在openMVS\CXSparse\Project\CXSparse文件夹中找到CXSparse.sln文件,双击以VS2015打开,注意把目标平台选为x64,然后分别在Debug和Release模式下进行编译。
八、配置Ceres
1.把Ceres,GoogleFlags和Google_Log这3个程序分别复制到openMVS的三个子文件夹里。
2.打开cmake-gui,然后点Configure,勾选BUILD_SHARED_LIBS,再点generate
3.找到openMVS/build/Google_Flags文件夹中的sln文件,用VS2015打开,分别在Debug和Release模式下进行编译。之后关掉VS2015,在开始菜单中,找到VS2015程序,右键以管理员身份运行,在打开的VS2015的窗口中重新打开刚才的gflags.sln文件,在项目列表里找到INSTALL项目,仅对该项目进行编译,并在Debug和Release两种模式下都分别进行编译
4.打开cmake-gui,进行设置然后点Configure,再点generate
5.找到openMVS/build/Google_Log文件夹中的sln文件,用VS2015打开,分别在Debug和Release模式下进行编译。之后关掉VS2015,在开始菜单中,找到VS2015程序,右键以管理员身份运行,在打开的VS2015的窗口中重新打开刚才的google-glog.sln文件,在项目列表里找到INSTALL项目,仅对该项目进行编译,并在Debug和Release两种模式下都分别进行编译
6.打开cmake-gui,进行如下设置
7.一般情况下会报错,修改EIGEN_INCLUDE_DIR为Eigen的根目录,即C:\openMVS\Eigen
勾选CXSPARSE,EXPORT_BUILD_DIR,MINIGLOG,然后再点Configure
8.对以下两项进行如下设置:
再次勾选CXSPARSE,再点Configure,然后点Generate
9.找到openMVS/build/Ceres文件夹中的sln文件,用VS2015打开,分别在Debug和Release模式下进行编译。之后关掉VS2015,在开始菜单中,找到VS2015程序,右键以管理员身份运行,在打开的VS2015的窗口中重新打开刚才的Ceres.sln文件,在项目列表里找到INSTALL项目,仅对该项目进行编译,并在Debug和Release两种模式下都分别进行编译
九、配置openMVG
1.打开git cmd这个软件,定位到openMVS这个文件夹下 ,然后输入git clone https://github.com/openMVG/openMVG.git,按回车
2.然后进入openMVG文件夹内,输入git submodule init,按回车
3.然后输入git submodule update,按回车
4.然后打开cmake-gui程序,进行如下设置
5.查找是否有Ceres_DIR这个参数,如果有进行修改为C:\Program Files\Ceres\CMake,没有可以通过点击Add Entry添加一个参数
CERES_DIR=C:\ProgramFiles\Ceres\CMake,点击OK,再Configure
6.勾选OpenMVG_BUILD_TESTS,OpenMVG_BUILD_EXAMPLES,再次点击Configure,然后点击Generate。
7.找到openMVS/build/openMVG文件夹中的sln文件,用VS2015打开,分别在Debug和Release模式下进行编译。之后关掉VS2015,在开始菜单中,找到VS2015程序,右键以管理员身份运行,在打开的VS2015的窗口中重新打开刚才的OpenMVG.sln文件,在项目列表里找到INSTALL项目,仅对该项目进行编译,并在Debug模式下进行编译,成功后将C:\Program Files\openMVG下的lib文件夹改成libd,再到Release模式下进行编译
十、配置openMVS
1.打开cmake-gui,进行设置,然后点Configure,对以下参数进行设置
2.取消BUILD_STATIC_RUNTIME,OpenMVS_USE_CUDA,然后点Configure,修改如下参数:
3.然后点击Configure,修改如下参数:
4.添加以下参数:然后点Configure,再点Generate
5.复制以下2个文件到指定位置
C:\openMVS\CGAL\auxiliary\gmp\include\gmp.h到C:\openMVS\CGAL\include\CGAL
C:\openMVS\CGAL\auxiliary\gmp\include\mpfr.h到C:\openMVS\CGAL\include
6.在APP下的5个工程中“连接器-常规-附加库目录”中添加C:\Program Files\CGAL\lib,debug和release都加
7.ReconstructMesh工程中“链接器-输入-附加依赖项”添加CGAL/auxiliary/gmp/lib/libgmp-10.lib,链接器->常规->附加库目录中添加: C:\openMVS
8.debug下所有工程在“链接器-输入-附加依赖项”中包含的跟OpenMVG相关的库,都需要把路径中的lib改成libd
9.设置完之后,推荐一个接一个编译工程,不要使用ALL_BUILD,可能会出现问题。先lib后app。
10.调整Boost文件:
在链接器->输入->附加依赖项中涉及到boost的库的文件名前加lib,比如
C:\openMVS\Boost\stage\lib\boost_system-vc140-mt-gd-1_61.lib修改为
C:\openMVS\Boost\stage\lib\libboost_system-vc140-mt-gd-1_61.lib
11.然后依次对APP下的每个项目进行编译,最终再编译ALL_BUILD。然后在开始菜单中,找到VS2015程序,右键以管理员身份运行,在打开的VS2015的窗口中重新打开刚才的CGAL.sln文件,在项目列表里找到INSTALL项目,仅对该项目进行编译,并在Debug和Release两种模式下都分别进行编译
12.配置opencv路径,在包含目录添加以下路径:C:\openMVS\build\openCV\install\lib
在库目录添加以下路径:C:\openMVS\build\openCV\install\include
在附加依赖项里添加以下文件,根据Debug和Release模式添加不同的文件
Debug:
opencv_calib3d310d.lib
opencv_core310d.lib
opencv_features2d310d.lib
opencv_flann310d.lib
opencv_highgui310d.lib
opencv_imgcodecs310d.lib
opencv_imgproc310d.lib
opencv_ml310d.lib
opencv_objdetect310d.lib
opencv_photo310d.lib
opencv_shape310d.lib
opencv_stitching310d.lib
opencv_superres310d.lib
opencv_ts310d.lib
opencv_video310d.lib
opencv_videoio310d.lib
opencv_videostab310d.lib
Release:
opencv_calib3d310.lib
opencv_core310.lib
opencv_features2d310.lib
opencv_flann310.lib
opencv_highgui310.lib
opencv_imgcodecs310.lib
opencv_imgproc310.lib
opencv_ml310.lib
opencv_objdetect310.lib
opencv_photo310.lib
opencv_shape310.lib
opencv_stitching310.lib
opencv_superres310.lib
opencv_ts310.lib
opencv_video310.lib
opencv_videoio310.lib
opencv_videostab310.lib
13.把以下C:\openMVS\build\openCV\install\bin路径下的所有dll文件复制到C:\Windows\SysWOW64下,或者C:\openMVS\build\openCV\install\bin这个路径添加到环境变量的path中即可