1. 程式人生 > >CMake+vs2010實現對CMVS-PMVS原始碼的編譯執行,以及實現與bundler之間的相互呼叫

CMake+vs2010實現對CMVS-PMVS原始碼的編譯執行,以及實現與bundler之間的相互呼叫

(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-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專案檔案和最終編譯連結後的二進位制檔案


 (4) 點選Configure按鈕, 在彈出的對話方塊裡選擇"Visual Studio 9 2008" (當然可以選擇自己的VC版本, 從VC6到VC11都有, 如下圖所示), 再選擇下方的"Use default native compilers", 點選Finish按鈕, 將進行配置

(5) 點選Generate按鈕, 生成CMVS-PMVS2的專案檔案, 其中頂級解決方案檔案CMVS-PMVS2.sln就在指定的"Where to build the binaries"目錄中.
(6) 進入VC步調. 雙擊這個CMVS-PMVS2.sln...編譯...連結...(先重新生成解決方案如下圖,成功後。按ctrl+F5執行,執行會提示資訊,這裡可以忽略)


(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的選項檔案, 名字可能有所不同)
依次執行完上述三個程式, 在pmvs\models目錄中, 就會看到生成了三個檔案: option-0000.ply, option-0000.patch, option-0000.pset, 其中.ply那個檔案可以用scanalyze-1.0.3或者下載meshlab來觀察(下載地址: http://graphics.stanford.edu/software/scanalyze/). 最後重建的效果就是這樣(以Kermit為例):