windows下PTAM的编译

前些日子在研究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 BLASpthreads ,libjpeg for win32 ,fltk这五个库文件。             

接下来我们对以上五个库进行配置,配置这五个库是为了编译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中的工程,运行会发生错误,解决办法:

把包含在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中的工程。会发生错误。解决办法:移除该工程中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的主体部分。我们在建立PTAM工程之后,

在工程的属性-c/c++-code generation-runtime library中选择MTD,多线程调试,在工程属性-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;


编译工程可运行成功。

这里还需要注意一下,PTAM中从相机中读入视频帧的程序是靠我们自己来写的,即针对VideoSource.h这个头文件,我们没有对应的cpp文件对其进行实现,所以我们得根据自己所用的不同摄像头,来对其进行实现。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值