Ubuntu18.04配置VisualSFM
参考:https://www.jianshu.com/p/cc0b548313e9

VisualSFM有GPU和NO_GPU两个版本,本文安装VisualSFM为有GUP版本

VisualSFM配置主要过程有:

1. Build VisualSFM

2. Build SiftGPU

3. Build Multicore Bundle Adjustment (a.k.a. “pba”)

4. Hack PMVS-2

5. Build Graclus 1.2

6. Hack CMVS

7. Running VisualSFM

一、安装前提

已经安装必须的工具和依赖
sudo apt install make build-essential pkg-config liblapack-dev gfortran jhead imagemagick libc6-dev-i386 libgtk2.0-dev libdevil-dev libboost-all-dev libatlas-cpp-0.6-dev libatlas-base-dev libcminpack-dev libgfortran3 libmetis-edf-dev libparmetis-dev freeglut3-dev

已经安装Nvidia显卡驱动和Cuda(GPU版本需要)            
安装过程中提示“cannot find -lXXX”,安装对应版本依赖。

二、编译VisualSFM
解压 VisualSFM_linux_64bit.zip,进入vsfm文件夹,open in Terminal,输入make
如果提示“...cannot be used when making a PIE project, recompile with -fPIC”,打开makefile文件,在LIB_LIST += 后添加“-no-pie”,然后重新make。

这一步只是生成了VisualSFM软件界面。

三、编译SiftGPU得到libsiftgpu.so
下载SiftGPU并得到编译文件,艰难过程
1.解压SiftGPU-V400.zip,进入SiftGPU文件夹,右键open in Terminal,输入make
可能出现数条以下错误:
/usr/bin/ld: cannot find XXX

一个个装包

其中/usr/bin/ld: cannot find -lIL 错误一直无法解决,最终找到该包为libdevil-dev包,进行安装,
$sudo apt-get install libdevil-dev

接着继续
$make
运行成功后在目录下得到一个libsiftgpu.so,copy该文件到上上一步的vsfm/bin中,即与VisualSFM程序同目录

四、编译pba-master包得到libpba.so
解压pba-master.zip
进入src/pba文件夹,编辑“SparseBundleCU.h” 和“pba.h” 文件,分别在顶部添加#include <stdlib.h>
回到pba-master文件夹下,右键open in Terminal,输入make
make完成后,把pba-master/bin下的libpba.so拷贝到上上一步的vsfm/bin中,即与VisualSFM程序同目录

五、接着生成pmvs2,cmvs,genOption三个二进制文件
在https://github.com/pmoulon/CMVS-PMVS上下载CMVS-PMVS-master.zip,解压后进入/VFMSource/CMVS-PMVS-master/program目录

$mkdir build
$cd build
$cmake ..
$make
到CMVS-PMVS/program/build/main下,将pmvs2,cmvs,genOption三个二进制文件拷贝到上上上一步的vsfm/bin中

六、VisualSFM运行
1.切换到vsfm/bin中,双击运行VisualSFM文件。
2.将VisualSFM添加到环境变量中,利用命令行运行。
$udo gedit ~/.bashrc
文件底部添加
export PATH=$PATH:/home/路径/vsfm/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/你的/路径/vsfm/bin
保存关闭,在命令行输入source ~/.bashrc 刷新一下输入VisualSFM&,即可运行

==============================================================================================
PS:
在解决/usr/bin/ld: cannot find -lIL
过程中也经过一通操作,做了以下事:

参考:https://www.cnblogs.com/gaoxiang12/p/5149067.html

由于特征匹配是SLAM中非常耗时间的一步,普通SIFT计算非常慢,普通PC上计算一个640×480的图中的SIFT大约需要几百毫秒左右,SIFTGPU能够明显地提升程序提取SIFT的速度。同时,它的代码大部分是基于OpenGL的,即使在没有英伟达显卡的机器上也能运行起来。

下载SiftGPU与依赖库

1.确保有OpenGL

查看是否安装opengl
dpkg -l|grep opengl
=============================OpenGL安装=====================================
参考:https://www.linuxidc.com/Linux/2017-03/141555.htm
首先不可或缺的就是编译器与基本的函数库,如果系统没有安装的话,依照下面的方式安装:

$ sudo apt-get install build-essential

安装OpenGL Library

$ sudo apt-get install libgl1-mesa-dev

安装OpenGL Utilities

$ sudo apt-get install libglu1-mesa-dev
      OpenGL Utilities 是一组建构于 OpenGL Library 之上的工具组,提供许多很方便的函数,使 OpenGL 更强大且更容易使用。

安装OpenGL Utility Toolkit

$ sudo apt-get install libglut-dev
      OpenGL Utility Toolkit 是建立在 OpenGL Utilities 上面的工具箱,除了强化了 OpenGL Utilities 的不足之外,也增加了 OpenGL 对于视窗介面支援。
      注意:在这一步的时候,可能会出现以下情况,shell提示:

Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libglut-dev
将上述$ sudo apt-get install libglut-dev命令改成$ sudo apt-get install freeglut3-dev即可。

2.Opengl按以上步骤安装好后下载GLEW
GLEW下载地址http://glew.sourceforge.net/,需根据opengl版本下载对应版本
运行以下文件opengl.c查看openGL版本,

#include <iostream>
#include <GL/glut.h>
// #include "stdafx.h" //int _tmain(int argc, _TCHAR* argv[])
int main(int argc, char *argv[])
{
glutInit(&argc, (char**)argv);
//显示模式初始化
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);
//定义窗口大小
glutInitWindowSize(300,300);
//定义窗口位置
glutInitWindowPosition(100,100);
//创建窗口
glutCreateWindow("OpenGL Version");
const GLubyte* name = glGetString(GL_VENDOR); //返回负责当前OpenGL实现厂商的名字
const GLubyte* biaoshifu = glGetString(GL_RENDERER); //返回一个渲染器标识符,通常是个硬件平台
const GLubyte* OpenGLVersion =glGetString(GL_VERSION); //返回当前OpenGL实现的版本号
const GLubyte* gluVersion= gluGetString(GLU_VERSION); //返回当前GLU工具库版本
printf("OpenGL实现厂商的名字:%s\n", name);
printf("渲染器标识符:%s\n", biaoshifu);
printf("OpenGL实现的版本号:%s\n",OpenGLVersion );
printf("OGLU工具库版本:%s\n", gluVersion);
system("pause");
return 0;
}

输入命令:
g++ -o test /home/zsl/Desktop/opengl.c -lGL -lGLU -lglut
./test
输出信息:
OpenGL实现厂商的名字:NVIDIA Corporation
渲染器标识符:GeForce RTX 2080 Ti/PCIe/SSE2
OpenGL实现的版本号:4.6.0 NVIDIA 418.39
OGLU工具库版本:1.3
sh: 1: pause: not found

依据opengl版本,我下载的最新版的glew的zip包,解压,进入目录/glew-2.1.0,glew是用makefile直接编译的,不用cmake,直接在当前目录打开终端
$ make
$ sudo make install

其将以下编译好的文件libGLEW.a  libGLEW.so  libGLEW.so.2.1  libGLEW.so.2.1.0
放在了/usr/lib64目录下,由于之后我们要用cmake去编,但是它可能找不到这个文件夹,所以需要告诉系统该文件夹下有要找的链接库:
$ sudo ldconfig /usr/lib64

3.完成glew操作后,开始编译SiftGPU,在下载好SiftGPU-V400.zip后解压,进入解压文件下/SiftGPU-V400/SiftGPU目录中,打开终端进行make操作。
$ make

这通操作过后依然/usr/bin/ld: cannot find -lIL

最终解决是一个libdevil-dev包没装。

下一章试试运行下

visualSFM的更多相关文章

  1. VisualSFM for Structure from Motion

    VisualSFM是Changchang Wu编写的使用 Structure from Motion (SfM)进行3D重建的交互界面,具体内容详见http://homes.cs.washington ...

  2. VisualSFM+PMVS生成稠密点云

    利用相机拍摄一个场景不同角度的图片,使用VisualSFM能够得到稀疏点云,如果想要得到稠密点云,可以在VisualSFM中加入PMVS的应用程序,PMVS会作为一个插件运行将稀疏点云插成稠密的点云. ...

  3. visualSFM的使用方法

    VisualSFM是Changchang Wu编写的使用 Structure from Motion (SfM)进行3D重建的交互界面,具体内容详见http://ccwu.me/vsfm/.本人电脑环 ...

  4. VisualSFM使用记录1 unable to load libsiftgpu.so

    官网:http://ccwu.me/vsfm/(解决过程蓝色字,问题原因解决方法红色字)SFM computer missing match阶段运行出现错误 More than 189MB of gr ...

  5. 【转】visualSFM生成的bundle.rd.out文件的格式

    1.bundle.out 文件包含了一些经过估算得到的场景和相机几何信息.文件的格式如下: //---------------------------------------------------- ...

  6. 3D场景定位的一些资源

    利用多张影像对小物体进行拍摄,进而进行三维重建,是计算机视觉中的重要问题之一. 目前对此研究最全面的网站是:http://vision.middlebury.edu/mview/eval/ 目前最优秀 ...

  7. Computer Graphics Research Software

    Computer Graphics Research Software Helping you avoid re-inventing the wheel since 2009! Last update ...

  8. CG&CAD resource

    Computational Geometry The Geometry Center (UIUC) Computational Geometry Pages (UIUC) Geometry in Ac ...

  9. 计算机视觉与模式识别代码合集第二版three

    计算机视觉与模式识别代码合集第二版three     Topic Name Reference code Optical Flow Horn and Schunck's Optical Flow   ...

随机推荐

  1. python中 requests 支持 socks代理

    参考博客 https://zhengheng.me/2016/08/25/python-requests-socks5/

  2. CSS斜切角

    问题 斜切角在Web设计和印刷中是相当受欢迎的样式.它通常是在一个或多个元素的角落切一个45°的角(也就是所谓的斜切角).特别是最近,扁平化设计的势头压过了拟真设计,也使这种效果更加流行.当斜切角只存 ...

  3. GitLab使用公钥SSH key登录

    SSH key提供了一种与GitLab通信的方式,能够不输密码就进行版本控制 第一步,检查SSH key是否存在 如果存在则把SSH Key放到GitLab上,如果不存在则生成新的SSH Key,再放 ...

  4. linux samba建立共享文件夹

    sudo  apt-get install samba 1.  mkdir  /home/lgs/samba_share    (/home/lgs为自己的家目录) 2.  find    -name ...

  5. Swagger学习笔记

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! Swagger学习笔记 课程目标 了解Swagger的概念及作用 掌握在项目中集成Swagger ...

  6. SQL UPDATE嵌套使用

    遇见的问题 1.更新语句,更新字段 UPDATE number SET sumab = 2 WHERE id =1 求和 SELECT SUM(num_a+num_b)FROM number WHER ...

  7. 解决HTML5提出的新的元素不被IE6-8识别的解决办法

    解决HTML5提出的新的元素不被IE6-8识别的解决办法 <!--[if lt IE 9]> <script type="text/javascript" src ...

  8. IE浏览器Web自动化

    一.常见问题 1.1  在IE11浏览器下运行自动化脚本特别缓慢. 具体表现:(64位IE驱动器下)脚本运行慢,尤其是文本框输入,其它浏览器是一起输入,但IE是单个字节输入字符串 解决方法:更换IE的 ...

  9. 002-红黑树【B-树】、二叉查找树

    一.引述-二叉查找树 红黑树(Red Black Tree) 一种特殊的二叉查找树.故先查看二叉查找树 二叉查找树特性:左字数上所有的节点的值都小于或等于他的根节点上的值 右子树上所有节点的值均大于或 ...

  10. 【JVM】-NO.110.JVM.1 -【JDK11 HashMap详解】

    Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...