PTAM编译

工作需要,研究一下PTAM的代码。这个介绍PTAM的编译,此文参考了高手的编译经验。有问题欢迎留言。

PTAM编译

综述

         PTAM是一个国外NX博士(目前工作于微软)写的虚拟现实增强开源库,已经有商业软件集成此库,由此可见此库功能和性能的强大。由于PTAM依赖较多第三方库,因此,编译过程中需要编译这些依赖库,较为繁琐。经过若干次尝试之后,使用VC2008在win7环境成功编译PTAM,并可以运行,现详述整个编译过程,造福其他PTAM编译者,同时也备自己以后查询翻阅。

第三方库列举

         PTAM编译依赖的第三方库如下:

         ⒈ GLEW(The OpenGL Extension Wrangler Library) ---- 翻译为中文是OpenGL扩展管理库,作用是在不同平台上高效地加载OpenGL扩展库,调用者不用理会不同平台OpenGL扩展库加载和使用的一些繁琐事情,可以保持OpenGL扩展库的调用者代码在不同平台的一致性。

         ⒉ LAPCK&BLAS ---- 这是一个高效线性算术数学库,使用Fortran语言写的,主要用于数学矩阵运算。

         ⒊ pthreads ---- POSIX threads库,创建、消耗等线程操作,由于遵循标准,调用者代码跟平台无关。

         ⒋ JPEG ---- jpeg解码和编码库。

         ⒌ FLTK(Fast Light toolkit) ---- 是基于C++开发的跨平台图形界面开发包,优点是体积小和模块化程度高,可以高效地开发2D/3D图形界面。

         ⒍ TooN(Tom’s Object-oriented numerics library) – 主要用于大量小矩阵的运算,尤其是矩阵分解和优化。

         ⒎ libCVD(computer vision library) ---- 计算机视觉库,主要用于计算机视觉和视频、图片处理。

         ⒏ Gvars3(configuration system library) ---- 系统配置库,属于libCVD的子项目,功能是读取配置文件,获取命令行数据等。

编译放置第三方库

         PTAM依赖上面的8个第三方库,现在逐一详细讲解各个库的编译,以及编译后的头文件、lib和dll的放置路径。我们默认头文件目录为INCLUDE;静态链接库目录为LIB,动态链接库目录为BIN。

         ⒈ GLEW ---- 解压glew压缩包,此压缩包包含编译好的lib,直接使用即可。将解压目录下的include目录整个拷贝到INCLUDE目录;将lib目录下的glew32.lib拷贝到LIB目录。

         ⒉ LAPCK&BLAS ---- 解压clapack.rar,此压缩包包含编译好的lib和dll,直接使用即可。将header压缩包中的lapack和blas文件夹整体拷贝到INCLUDE目录;由于PTAM默认使用MT连接方式,我们使用MT后缀的库,release和debug都可,将lapack_win32_MT.lib和blas_win32_MT.lib拷贝到LIB目录,lapck_win32_MT.dll和blas_win32_MT.dll拷贝到BIN目录。

         ⒊ pthreads ---- 双击解压pthreads-w32-2-8-0-release.exe,我们需要的头文件和库都在Pre-built.2文件夹下,将include目录下的pthread.h、sched.h和semaphore.h拷贝到INCLUDE目录;将lib目录下的lib文件拷贝到LIB目录;将lib目下的dll拷贝到BIN目录。

         ⒋ JPEG ---- 安装jpeg-6b-4.exe,将C:\Program Files (x86)\GnuWin32\include目录下的所有头文件拷贝到INCLUDE目录;将lib目录的jpeg.lib和jpeg-bcc.lib拷贝到LIB目录。

         ⒌ FLTK ---- 解压fltk-1.3.2-source.tar.gz,将其作为一个整体放置到INCLUDE目录。

         ⒍ TooN ---- 解压TooN-2.0.beta7.zip,将其作为一个整体放置到INCLUDE目录。

         ⒎ libCVD ---- 解压libcvd-20100119.zip,运行build/vc2008/libcvd.slh,修改Include\TooN\internal\config.hh文件,注释掉其它宏,只保留

#define TOON_USE_LAPACK 1

编译此工程,将cvd目录作为一个整体拷贝到INCLUDE目录;将lib目录的libcvdd.lib拷贝到LIB目录。

       ⒏ Gvars3 ---- 解压gvars-3.0.zip,打开gvars\build\vc2008\gvars3.slh,将gvars3.slh同目录的config.h拷贝到gvars/gvars3目录,删除GUI_Fltk2.h和GUI_Fltk2.cc,编译。将gvars3目录作为一个整体拷贝到INCLUDE目录;将lib/ gvars3d.lib拷贝到LIB目录。

       至此,所有依赖的第三方头文件和库都已经编译出来,放置到正确位置。

编译PTAM

         万事俱备,只差PTAM。现在开始编译PTAM。

1.      解压PTAM源文件压缩包,将build/win32目录下的TPAM.vcproj和PTAM.slh拷贝到PTAM源码同级目录,打开PTAM.slh。

2.      配置PTAM工程的头文件目录包含INCLUDE;依赖静态库目录包含LIB;exe输出目录为BIN;修改额外依赖静态库为:libcvdd.lib gvars3d.lib glew32.lib opengl32.lib blas_win32_MT.liblapack_win32_MT.lib pthreadVCE2.lib。

3.      创建一个videosource.cpp的文件实现VideoSource类,将此cpp添加进工程,删除VideoSource_Win32_CMU1394.cc。

4.      修改include\TooN\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;

即将sqrt的参数由整数改为double型。

至此,可以编译PTAM工程,顺利编译通过,得到exe文件。CameraCalibrator按照上述配置也可以正常编译通过。我们使用的TPAM工程。下面会介绍videosource类的实现,使用VideoInput开源库进行摄像头采集,并将采集到的画面送给PTAM进行处理。


参考网站:http://blog.csdn.net/cgf_909/article/details/24457771


----------------------------------------------------------  QQ 分割线 -------------------------------------------------------------

【欢迎QQ交流】: 383938578


你可能感兴趣的:(PTAM,PTAM,虚拟现实,增强现实)