CMake+vs2010实现对CMVS-PMVS源代码的编译运行,以及实现与bundler之间的相互调用

时间:2020-11-30 00:19:27
(1) 下载CMVS-PMVS2的Windows版本(下载地址: https://github.com/TheFrenchLeaf/CMVS-PMVS/downloads ), 此版本并不包含VC常用的.sln/.vcproj组织体系或者NMake所用的Makefile, 但是可以用CMake进行转换获得:软件cmake-2.8.6-win32-x86  稠密重建CMVS-PMVS时想用VS2010对CMVS进行编译和运行就得使用该软件

(2) 解压下载好的TheFrenchLeaf-CMVS-PMVS-41ffa42.zip, 可以看到里边有binariesWin-Linux目录, 这里放置了CMVS-PMVS2的Linux/Win32/Win64已编译版本, 可以拿来直接使用, 其输入就是Bundler的输出(参见上篇博客:http://blog.csdn.net/baidu_32134295/article/details/53263144#t2); 还有program目录, 这是它的源码. 下边要对源码进行编译. 这个program目录下有个CMakeLists.txt文件, 里边记录了要生成CMVS-PMVS2所需的各类源文件及其对若干库的依赖关系, 这个文件就是跨平台build系统CMake的输入

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

由于(1)(2)所述,我们首先要将CMVS-PMVS的源代码转换成.sln使得代码可以在vs上进行编译链接,但在此之前需要依次安装以下软件,以配置环境

注意:依次安装

VS2010 :软件地址:http://www.uzzf.com/soft/85581.html

windows SDK 7.1 :下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=8279 (这里我是下载的中文简体版)

VS2010 SP1 :https://www.microsoft.com/zh-CN/download/details.aspx?id=4422(这里我是下载的中文简体版)

CMake-2.8.6-win32-x86http://www.cmake.org/files/v2.8/cmake-2.8.6-win32-x86.exe (这里我下载的是这个版本,下载高版本怕会出错,你想用高版本的话可以自己尝试)

软件cmake-2.8.6-win32-x86  稠密重建CMVS-PMVS时想用VS2010对CMVS进行编译和运行就得使用该软件

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

如果上面四个软件其中之一没有安装成功,稠密重建CMVS 运行cmake时会出现如下错误:
Check for working C compiler using: Visual Studio 10
Check for working C compiler using: Visual Studio 10 -- broken
CMake Error at E:/cmake/CMake 2.8/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:52 (MESSAGE):
The C compiler "cl" is not able to compile a simple test program.
各个软件的安装过程中可能会出现一系列问题,直接搜百度就行
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
(3) 运行CMake(cmake-gui), 如下图所示, 给出"Where is the source code", 就是源代码所在根目录, 也就是*CMakeLists.txt所在的目录; 再给出"Where to build the binaries", 这个目录将放置生成的VC项目文件和最终编译链接后的二进制文件

CMake+vs2010实现对CMVS-PMVS源代码的编译运行,以及实现与bundler之间的相互调用
 

 (4) 点击 Configure按钮, 在弹出的对话框里选择"Visual Studio 9 2008" (当然可以选择自己的VC版本, 从VC6到VC11都有, 如下图所示), 再选择下方的"Use default native compilers", 点击Finish按钮, 将进行配置
CMake+vs2010实现对CMVS-PMVS源代码的编译运行,以及实现与bundler之间的相互调用
 

(5) 点击 Generate按钮, 生成CMVS-PMVS2的项目文件, 其中*解决方案文件CMVS-PMVS2.sln就在指定的"Where to build the binaries"目录中.
(6) 进入VC步调. 双击这个CMVS-PMVS2.sln...编译...链接...(先重新生成解决方案 如下图,成功后。按ctrl+F5运行,运行会提示信息,这里可以忽略)

CMake+vs2010实现对CMVS-PMVS源代码的编译运行,以及实现与bundler之间的相互调用
(7) 这时在
D:\CMVS\program\CMake\main\的Release/Debug文件夹下会生成三个控制台程序: cmvs.exe, genOption.exe, pmvs2.exe, 这三个程序就是上篇文章 (http://blog.csdn.net/baidu_32134295/article/details/53263144#t2)中

CMVS-PMVS的配置:(1)  下载CMVS-PMVS并解压缩。中所需要的文件。 这里可以将这三个exe文件像(1)中所说那样放置到相应的文件夹下,(不同的是这里只需要拷贝这三个exe文件,而不需要像(1)所说全部拷贝)

如果想对CMVS-PMVS算法进行改进,则在代码重新编译运行之前,需要先将(7)步骤中Debug/Release下的三个exe文件删除 (8) 运行DOS(cmd.exe) , 进入Bundler的输出所在的目录(假设为result, 下有pmvs子目录, 参见上篇博客: http://blog.csdn.net/baidu_32134295/article/details/53263144#t2 ), 分别运行三个控制台程序:

x:\...\result> cmvs pmvs/
x:\...\result> genOption pmvs/
x:\...\result> pmvs2 pmvs/ option-0000 (option-0000是pmvs2.exe的选项文件, 名字可能有所不同)
CMake+vs2010实现对CMVS-PMVS源代码的编译运行,以及实现与bundler之间的相互调用
 
依次执行完上述三个程序, 在pmvs\models目录中, 就会看到生成了三个文件: option-0000.ply, option-0000.patch, option-0000.pset, 其中.ply那个文件可以用scanalyze-1.0.3或者下载meshlab来观察(下载地址: http://graphics.stanford.edu/software/scanalyze/ ). 最后重建的效果就是这样(以Kermit为例):

CMake+vs2010实现对CMVS-PMVS源代码的编译运行,以及实现与bundler之间的相互调用