博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
visualSFM
阅读量:5061 次
发布时间:2019-06-12

本文共 4846 字,大约阅读时间需要 16 分钟。

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 
#include
// #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包没装。

 

下一章试试运行下

        

转载于:https://www.cnblogs.com/2333333he-tui/p/10525731.html

你可能感兴趣的文章
Redis学习手册(Key操作命令)
查看>>
模板统计LA 4670 Dominating Patterns
查看>>
泛型第23条:请不要在新代码中使用原生态类型
查看>>
非对称加密
查看>>
bzoj 3413: 匹配
查看>>
从下周开始就要采用网上记录值班日志了
查看>>
在qq中可以使用添加标签功能
查看>>
eclipse 自定义布局
查看>>
团队项目开发客户端——登录子系统的设计
查看>>
【AppScan心得】IBM Rational AppScan 无法记录登录序列
查看>>
[翻译] USING GIT IN XCODE [4] 在XCODE中使用GIT[4]
查看>>
简化通知中心的使用
查看>>
SpringMVC的@Validated校验注解使用方法
查看>>
Python之os模块
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
【蓝桥杯】PREV-21 回文数字
查看>>
html 简介
查看>>
python使用上下文对代码片段进行计时,非装饰器
查看>>
js中比较实用的函数用法
查看>>
安装预览版镜像后无法检测到预览版更新的解决方案
查看>>