1. 程式人生 > >windows下PTAM的編譯

windows下PTAM的編譯

bcv sch 源程序 exe toon 方法 blank 找到 reads

前些日子在研究PTAM,以下首先說說PTAM的編譯過程,我在XP幾WIN7搭配vs2010中均已測試過,都能夠執行。

首先下載編譯PTAM所必須的庫文件。下載地址我會給出

PTAM(PTAM.zip)http://www.robots.ox.ac.uk/~gk/PTAM/

GLEW(glew-1.5.0-win32.zip)http://glew.sourceforge.net/

Lapack and BLAS (shared-libs.zipとheaders.tar.gz)http://www.fi.muni.cz/~xsvobod2/misc/lapack/

pthreads (pthreads-w32-2-8-0-release.exe)

http://sourceware.org/pthreads-win32/

libjpeg for win32 (jpeg-6b-4.exe)http://gnuwin32.sourceforge.net/packages/jpeg.htm

fltk(fltk-2.0.x-r6305.tar.bz2) http://www.fltk.org/index.php

若是無法在上述網頁中找到所須要的安裝包。能夠在http://download.csdn.net/detail/cgf_909/7175757下載PTAM的源程序,在http://download.csdn.net/detail/cgf_909/7249657下載到GLEWLapack and BLAS

pthreadslibjpeg for win32fltk這五個庫文件。

接下來我們對以上五個庫進行配置,配置這五個庫是為了編譯TooN, libcvd, gvars3這三個庫,而這三個庫是編譯PTAM所必須的庫文件

1、將下載下來的GLEW解壓後。把bin/glew32.dll放到c盤Windows/system32中。把lib/glew32.lib放到{VC 的根文件夾}vc/Lib中。把include/GL/glew.h放到{VC 根文件夾}/Include/GL中。把include/GL/wglew.h放到{VC Root}/Include/GL中。

2、加壓LAPACK AND BLAS把blas_win32.dll和lapack_win32.dll放到Windows/system32中。blas_win32.lib和lapack_win32.lib放到{VC 根文件夾}/Lib中。將

headers.tar.gz解壓。把lapack和blas這兩個文件夾放到{VC 根文件夾}/Include/中。這裏須要註意一下,在這裏Lapack and BLAS (shared-libs.zipとheaders.tar.gz)http://www.fi.muni.cz/~xsvobod2/misc/lapack/所給出的網址中,下載到的LAPACK和BLAS庫文件我配置好後。一直有錯誤,發現是程序代碼生成過程中MD,MT的選擇問題,PTAM要在MTD下執行,所以我們選擇的依賴庫為blas_win32_MT.lib和lapack_win32_MT.lib。推薦在這裏下載這個庫文件http://download.csdn.net/detail/cgf_909/7175585

3、把pthreads-w32-2-8-0-release.exe解壓得到Pre-built.2、pthreads.2、QueueUserAPCEx這三個目錄。把Pre-built.2/include下的semaphore.h、sched.h、pthread.h這三個頭文件放到{VC 根文件夾}/Include中。Pre-built.2/lib下的lib文件放到{VC 根文件夾的}/Lib中在把這個裏面的dll文件放到Windows/system32中。

4、執行jpeg-6b-4.exe。把他安裝到默認路徑。安裝完畢後在(C:/Program Files/GnuWin32/include和C:/Program Files/GnuWin32/lib)

把include文件和lib文件分別復制到vc根文件夾的include和lib中去。

5、將fltk-2.0.x-r6305.tar.bz2演說包解壓、然後它作為一個頭文件放到{VC Root}/Include中。

接下來我們須要編譯TooN。 libcvd, gvars3這三個庫,這三個庫的下載地址為http://download.csdn.net/detail/cgf_909/7175721

1、首先是TooN的編譯,我們把解壓後的TooN作為一個頭文件包括到vc根文件夾的include中就可以

2、對libcvd的編譯,解壓libcvd文件執行其下build/vc2005中的project,執行會錯誤發生。解決的方法:

把包括在vc根文件夾中include下的TooN頭文間中的toon/internal/config.hh打開,其它代碼均屏蔽掉僅僅保留#define TOON_USE_LAPACK 1 這一行,

再次編譯libcvd可發現編譯通過,生成一lib目錄,把lib目錄下的lib庫放置vc根目錄的lib中。然後再把cvd作為一頭文件

放到{VC Root}/Include中。

3、解壓gvars3執行build/vc2005中的project。會錯誤發生。解決的方法:移除該project中GUI_Fltk2.h,和GUI_Fltk2.cc,

然後在gvars3文件夾下創建config.h文件:

#ifndef GVARS3_INCLUDE_CONFIG_H

#define GVARS3_INCLUDE_CONFIG_H

#define GVARS3_HAVE_TOON 1

#endif

又一次編譯可通過,生成了一lib目錄,把該目錄下的lib文件放置{VC Root}/Lib中。

然後把gvars3下的gvars3作為一頭文件放置{VC Root}/Include中

在這些都配置好後,我們就能夠來編譯PTAM程序了

在PTAM中包括兩個部分,一個是相機的校準部分。一個是PTAM的主體部分。

首要要對相機進行校準得到相機的參數才幹執行PTAM的主體部分。我們在建立PTAMproject之後。

在project的屬性-c/c++-code generation-runtime library中選擇MTD,多線程調試,在project屬性-Linker-input-addition Dependencies

增加這些外部依賴項

OpenNI.lib

glew32.lib

libcvdd.lib
gvars3d.lib
opengl.lib
pthreadVC2.lib
lapack_win32_MTd.lib
blas_win32_MTd.lib

然後把SymEigen.h文件裏的

ev = makeVector(A_plus_B, -A_plus_B/2 + A_minus_B * sqrt(3)/2, -A_plus_B/2 -

A_minus_B * sqrt(3)/2) - Ones * a/3;

改為

ev = makeVector(A_plus_B, -A_plus_B/2 + A_minus_B * sqrt(3.0)/2.0, -A_plus_B/2 -

A_minus_B * sqrt(3.0)/2.0) - Ones * a/3;


編譯project可執行成功。

這裏還須要註意一下。PTAM中從相機中讀入視頻幀的程序是靠我們自己來寫的,即針對VideoSource.h這個頭文件,我們沒有相應的cpp文件對其進行實現,所以我們得依據自己所用的不同攝像頭。來對其進行實現。

windows下PTAM的編譯