一. 环境搭建
配置:Ubuntu14.04
1. 前期准备
(1)更新软件源

sudo apt-get update(更新软件列表)
sudo apt-get upgrade(更新已安装的软件)

(2)安装build工具

sudo apt-get install build-essential cmake pkg-config

(3)安装C++库

sudo apt-get install libboost-dev libboost-doc

(4)安装图像IO和摄像机驱动

sudo apt-get install libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev libv4l-dev

(5)安装视频IO,编解码和视频显示库

sudo apt-get install libavcodec-dev libavformat-dev libavutil-dev libpostproc-dev libswscale-dev libavdevice-dev libsdl-devsudo apt-get install libgtk2.0-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev

(6) 安装OpenGL(Open Graphics Library)

sudo apt-get install mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev

2. 安装OpenCV(Open Source Computer Vision Library)
(1)卸载任何以前安装的ffmpeg和x264软件。Ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

sudo mkdir Opencv
cd Opencv
sudo apt-get -qq remove ffmpeg x264 libx264-dev

(2)安装依赖文件

sudo apt-get install libopencv-dev build-essential checkinstall cmake pkg-config yasm libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils

(3)安装ffmpeg

sudo add-apt-repository ppa:mc3man/trusty-media
sudo apt-get update
sudo apt-get install ffmpeg gstreamer0.10-ffmpeg

(4)下载和解压提取OpenCV

sudo wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip
unzip OpenCV-2.4.9.zip
cd opencv-2.4.9

(5) 开始编译安装

mkdir build
cd build

如果安装了cuda,运行包含以下参数的cmake命令:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..

如果没有安装cuda,添加参数-D WITH_CUDA=OFF

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_CUDA=OFF -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..

(6) 重启,运行OpenCV的测试程序

cd OpenCV/samples/c
sudo ./build_all.sh
./facedetect "/usr/share/opencv/haarcascades/haarcascade_frontalface_alt.xml" lena.jpg

运行结果如下:

用sudo gedit /etc/ld.so.conf打开文件,在其中添加以下lib目录:
include /home/weixinyu/LearnAndWork/gaoyanyuan/Opencv/opencv-2.4.9/build/lib
ld.so.conf记录了编译时使用的动态链接库的路径,把opencv库的路径添加到ld.so.conf,这样以后程序在运行时如果需要调用opencv的库,系统会自己找到而不用手动指定。
Ps.一般在更改ld.so.conf文件后需要运行ldconfig命令,此命令把所有的库文件都被缓存到ld.so.cache中,如果不运行这个命令,即使写入了ld.so.conf,系统也可能找不到相关库)
附参考链接:
http://sysads.co.uk/2014/05/install-opencv-2-4-9-ubuntu-14-04-13-10/ 
http://www.linuxidc.com/Linux/2014-12/110045.htm
  
3. 安装 TooN && libCVD && Gvars3
TooN:与线性代数有关的头文件库。
libCVD:一个与图像处理、视频获取和计算机视觉有关的库。
Gvars3:一个libCVD的子项目。
libCVD是需要TooN库的,所以安装顺序为TooN->libCVD->Gvars3
      由于TooN 、libCVD、Gvars3和PTAM源码的版本兼容问题,推荐采用以下的版本搭配:TooN 、libCVD、Gvars3:在https://github.com/slowlythinking/PTAM 中获得(其中也包含PTAM的源码,但是存在问题);
PTAM:在其官网http://www.robots.ox.ac.uk/~gk/PTAM/download.html中获得。
(1) 安装TooN

make clean
./configure
sudo make install

(2) 安装libcvd

make clean
export CXXFLAGS=-D_REENTRANT
./configure --without-ffmpeg
make
sudo make install

(3)安装gvars3

make clean
./configure --disable-widgets
make
sudo make install

(4)运行ldconfig让动态链接库为系统所共享

sudo ldconfig

4. 安装PTAM
(1)获取源码
将PTAM/Build/Linux所有文件拷到 PTAM目录下。
附源码链接:http://www.robots.ox.ac.uk/~gk/PTAM/download.html 
(2)更改makefile和Tracker.cc文件
在makefile文件中更改COMPILEFLAGS、LINKFLAGS和VIDEOSOURCE如下:
COMPILEFLAGS = -I /usr/include -I /usr/local/include -D_LINUX -D_REENTRANT -Wall -O3 -march=nocona -msse3
LINKFLAGS = -L /usr/local/lib -lGVars3 -lcvd -lopencv_legacy -lopencv_core -lopencv_video -lopencv_highgui -lGLU -lGL -llapack -lblas -lgfortran
# Edit this line to change video source
VIDEOSOURCE = VideoSource_Linux_V4L.o
在Tracker.cc的头文件中添加:
#include <unistd.h>

5. 编译运行
编译:在PTAM的文件中直接运行make命令。会得到两个可执行文件CameraCalibrator和PTAM。
运行:
       运行CameraCalibrator,进行相机标定:使用下图右上角的CapFrame取帧,至少取不同角度的4帧以上,取帧结束以后,按下Optimize,计算相机本质矩阵(焦距等相机参数)。
       CameraCalibrator运行完毕之后运行PTAM,开始运行时由于需要初始化地图,需要用户选取两帧作为初始化的数据输入,具体操作步骤为按下空格键,程序会计算出这一帧的FAST角点显示在图像上,然后做轻微平移,再次按下空格键,初始化完毕。界面右上方有Draw AR off和View Map on,作用分别是把虚拟物品(此处为四只眼睛)显示到平面上和显示软件所建地图信息。以下为运行截图(由于实验时相机问题,标定和识别结果不够精确,所以四只眼睛并未准确显示到相应平面):

6. 安装经验
       如果之前安装的TooN、libcvd、gvars3有问题,因为三个包的makefile文件中均无uninstall命令,可做如下清理(注意:删除之前请查看以下两个文件夹中的文件的名字及生成时间以免误删):
在/usr/local/lib中执行:
sudo rm lib*
sudo rm -R pkg*
在/usr/local/include中执行
sudo rm -R *
如果安装PTAM时出错,出错信息可能被缓冲掉很多,可用script -f screen.log和exit输出make时的所有信息以查看错误信息。

PTAM在Linux下编译运行相关推荐

  1. linux下软件编译终止,[2018年最新整理]linux下编译运行程序命令大全.ppt

    [2018年最新整理]linux下编译运行程序命令大全 1. 项目课题引入 2. Vi编辑器的使用方法 3. Linux中C语言程序的编辑 4. Linux中C语言程序的运行 5. 现场演示案例 课题 ...

  2. Linux下编译运行C程序

    代码变成可执行文件叫做编译(compile):先编译这个还是先编译那个这个(即编译的安排)叫做构建(build) 我们在Linux环境下编译C语言需要gcc. 1.配置GCC 刚装好的系统已经有GCC ...

  3. 在linux下编译运行c语言程序

    Linux   中最重要的软件开发工具是   GCC.GCC   是   GNU   的   C   和   C++   编译器.实际上,GCC   能够编译三种语言:C.C++   和   Obje ...

  4. 如何在linux下编译运行c程序

    1.在终端下打开一个编辑器(我用的gedit),建立一个hello.c文件并保存, 2.关闭编辑器,在终端上输入 gcc -o hello hello.c编译c程序 3.输入./hello运行c程序

  5. Linux下编译运行Go程序

    编译 go build test.go 指定输出文件 go build -o release/mymain src/*.go 修改权限命令 chmod 777 程序名称 后台运行的命令(./mygam ...

  6. 解决 linux下编译运行.sh文件报错 “[: XXXX: unexpected operator” 问题

    上网查了资料发现,因为Ubuntu默认的sh是连接到dash的,而dash跟bash的不兼容所以出错.既然原因找到,那么就可以把默认连接改成bash即可 $ sudo dpkg-reconfigure ...

  7. Linux 下编译并运行C++程序

    1>新建一个C++新文件 ----helloworld.c #include<iostream> using namespace std; int main(){cout<&l ...

  8. Linux 下编译并运行C语言程序

    Linux下编译并运行C语言程序 ,以Centos 系统为例 1>新建一个hello.c文件 可以直接用图形用户界面新建也可以使用命令新建. 用命令行的话,要用到Linux下的vi编辑器的相关命 ...

  9. Linux下编译、链接、加载运行C++ OpenCV的两种方式及常见问题的解决

    Linux下编译.链接.加载运行C++ OpenCV的两种方式及常见问题的解决 在Linux下安装完OpenCV C++之后(还没有安装的读者请参考Ubuntu 18.04 安装OpenCV C++) ...

  10. linux 保存编译log,(转)Linux下编译安装log4cxx

    一个项目的服务器端在Linux平台下,用到了开源日志库log4cxx,这个库是apache项目的一个子库.功能很不错.下面记录下它的编译和安装过程. 第一步安装apr-1.3.8,顺序不能错,它必须首 ...

最新文章

  1. iOS关于Xcode上的Other linker flags
  2. SpringBoot+Redis环境搭建
  3. static unsigned short,int ,char
  4. c语言 自动包含头文件,C语言不要重复包含.h头文件和.c文件
  5. WPF 中Frame + Page 的使用
  6. 收集一些常用的正则表达式
  7. 事物日志恢复 mysql_浅谈SQL Server中的事务日志(五)----日志在高可用和灾难恢复中的作用...
  8. ZooKeeper--Recipes和解决方案
  9. linux内核input子系统解析,ARM Linux内核Input输入子系统浅解
  10. mysql TIMESTAMP 报错
  11. 数据库小结2--提升
  12. html5 localStorage
  13. Julia : The Power Sum的算法
  14. 兄弟打印机内存已满清零方法_兄弟打印机清零大全
  15. 为什么仿宋字体打印出楷体_请问仿宋体和楷体有什么区别?
  16. 浅说物联网之一:物联网圈子的三个玩家
  17. 自己制作一个小程序需要多少钱
  18. C语言-图书管理系统
  19. 黑苹果一些奇怪的事情
  20. 01 KVM虚拟化简介

热门文章

  1. MFC下实现的简单随机点名器
  2. Origin 2022安装教程(附下载链接)
  3. 轴承公差以及常见的轴孔公差配合
  4. 软件测试面试自我介绍
  5. STM32编程软件分享——MDK5安装包以及调试工具
  6. 快递物流类API推荐
  7. visio对齐连接线
  8. 【安装SSH服务】ubuntu安装ssh以及开启root用户ssh登录
  9. MySQL闪退解决办法
  10. OriginPro 中文