sfm支持Linux和Windows吗,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

回到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包没装。

下一章试试运行下

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值