windows下PTAM的编译

来源:互联网 发布:有线键鼠套装推荐 知乎 编辑:程序博客网 时间:2024/05/21 14:46

前些日子在研究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这个头文件,我们

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 鱼刺刺手指肿了怎么办 做小保健射的快怎么办 宝宝被跳骚_咬了怎么办 北京被仙人跳了怎么办 cnc刀库卡住了怎么办 经常熬夜月经不来怎么办 三星a7手机发热严重怎么办 三星s6电池坏了怎么办 苹果7磨砂黑氧化怎么办 索尼z2一直重启怎么办 备份是无限重启怎么办 网上套现被骗了怎么办 魅族手机摔弯了怎么办 手机不带nfc功能怎么办 三星s7后盖脱胶怎么办 小米6听筒声音小怎么办 红米4听筒声音小怎么办 索尼z5太耗电了怎么办 索尼z5密码忘了怎么办 高清线头子坏了怎么办 金立m5开不了机怎么办 旅行箱拉链坏了怎么办 青芒果切开没熟怎么办 拉链头掉了一侧怎么办 新秀丽箱子坏了怎么办 拉杆箱秘密忘了怎么办 双肩包带子太滑怎么办 双肩包背带老掉怎么办 剃须刀刀网坏了怎么办 期望工资说高了怎么办 年龄大的辅警怎么办 夷陵中学老校区怎么办 点我达同城直送怎么办 苏州市民卡b丢了怎么办 医保卡换市民卡怎么办 乐清市民卡丢了怎么办 市民卡b卡丢了怎么办 临海市民卡丢了怎么办 常熟市民卡坏了怎么办 医保卡钱用完了怎么办 医保卡本子丢了怎么办