visualSFM
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的更多相关文章
- VisualSFM for Structure from Motion
VisualSFM是Changchang Wu编写的使用 Structure from Motion (SfM)进行3D重建的交互界面,具体内容详见http://homes.cs.washington ...
- VisualSFM+PMVS生成稠密点云
利用相机拍摄一个场景不同角度的图片,使用VisualSFM能够得到稀疏点云,如果想要得到稠密点云,可以在VisualSFM中加入PMVS的应用程序,PMVS会作为一个插件运行将稀疏点云插成稠密的点云. ...
- visualSFM的使用方法
VisualSFM是Changchang Wu编写的使用 Structure from Motion (SfM)进行3D重建的交互界面,具体内容详见http://ccwu.me/vsfm/.本人电脑环 ...
- VisualSFM使用记录1 unable to load libsiftgpu.so
官网:http://ccwu.me/vsfm/(解决过程蓝色字,问题原因解决方法红色字)SFM computer missing match阶段运行出现错误 More than 189MB of gr ...
- 【转】visualSFM生成的bundle.rd.out文件的格式
1.bundle.out 文件包含了一些经过估算得到的场景和相机几何信息.文件的格式如下: //---------------------------------------------------- ...
- 3D场景定位的一些资源
利用多张影像对小物体进行拍摄,进而进行三维重建,是计算机视觉中的重要问题之一. 目前对此研究最全面的网站是:http://vision.middlebury.edu/mview/eval/ 目前最优秀 ...
- Computer Graphics Research Software
Computer Graphics Research Software Helping you avoid re-inventing the wheel since 2009! Last update ...
- CG&CAD resource
Computational Geometry The Geometry Center (UIUC) Computational Geometry Pages (UIUC) Geometry in Ac ...
- 计算机视觉与模式识别代码合集第二版three
计算机视觉与模式识别代码合集第二版three Topic Name Reference code Optical Flow Horn and Schunck's Optical Flow ...
随机推荐
- python中 requests 支持 socks代理
参考博客 https://zhengheng.me/2016/08/25/python-requests-socks5/
- CSS斜切角
问题 斜切角在Web设计和印刷中是相当受欢迎的样式.它通常是在一个或多个元素的角落切一个45°的角(也就是所谓的斜切角).特别是最近,扁平化设计的势头压过了拟真设计,也使这种效果更加流行.当斜切角只存 ...
- GitLab使用公钥SSH key登录
SSH key提供了一种与GitLab通信的方式,能够不输密码就进行版本控制 第一步,检查SSH key是否存在 如果存在则把SSH Key放到GitLab上,如果不存在则生成新的SSH Key,再放 ...
- linux samba建立共享文件夹
sudo apt-get install samba 1. mkdir /home/lgs/samba_share (/home/lgs为自己的家目录) 2. find -name ...
- Swagger学习笔记
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! Swagger学习笔记 课程目标 了解Swagger的概念及作用 掌握在项目中集成Swagger ...
- SQL UPDATE嵌套使用
遇见的问题 1.更新语句,更新字段 UPDATE number SET sumab = 2 WHERE id =1 求和 SELECT SUM(num_a+num_b)FROM number WHER ...
- 解决HTML5提出的新的元素不被IE6-8识别的解决办法
解决HTML5提出的新的元素不被IE6-8识别的解决办法 <!--[if lt IE 9]> <script type="text/javascript" src ...
- IE浏览器Web自动化
一.常见问题 1.1 在IE11浏览器下运行自动化脚本特别缓慢. 具体表现:(64位IE驱动器下)脚本运行慢,尤其是文本框输入,其它浏览器是一起输入,但IE是单个字节输入字符串 解决方法:更换IE的 ...
- 002-红黑树【B-树】、二叉查找树
一.引述-二叉查找树 红黑树(Red Black Tree) 一种特殊的二叉查找树.故先查看二叉查找树 二叉查找树特性:左字数上所有的节点的值都小于或等于他的根节点上的值 右子树上所有节点的值均大于或 ...
- 【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 ...