SfM即Structure form Motion,这个算法的实现,作者Noah Snavely给出了一个具体的实现。

目前最新下载https://github.com/snavely/bundler_sfm

项目主页http://www.cs.cornell.edu/~snavely/bundler/

之前在windows7上部署了一次,不过目前把系统换成了windows8.1,运行出现了一点问题,于是决定把这个过程写一遍。

首先下载解压得到如下图:

里面有个文件夹vc++,给出的vs2005的项目工程,在这边我用vs2010.有:

vs2010转换项目之后得到如下:

生成解决方案之后会有很多错误,如下:

错误修改具体可以参考http://blog.csdn.net/azkabannull/article/details/7872958

1、error C1083: 无法打开包括文件:“sysdep1.h”: No such file or directory

在E:\github\bundler_sfm-master\lib\f2c目录下将sysdep1.h0文件名修改为sysdep1.h即可,同时将signal1.h0文件名修改为signal1.h

2、 error C1083: 无法打开包括文件:“arith.h”: No such file or directory   

这时可以在E:\github\bundler_sfm-master\lib\f2c目录下新建一个arith.h文件,在文件里添加如下内容即可:

#define IEEE_8087
#define Arith_Kind_ASL 1
#define Long int
#define Intcast (int)(long)
#define Double_Align
#define X64_bit_pointers
#define QNaN0 0x0
#define QNaN1 0xfff80000
 

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

3、修改matrix中个四个内联函数,编译器的问题,内联函数可能不能够识别。改成普通的c的定义实现的方式,即matric.h中修改如下:

将实现放到matric.c下:

4、error C1083: 无法打开包括文件:“jpeglib.h”: No such file or directory

5、error C2039: “_isnan”: 不是“std”的成员    e:\github\bundler_sfm-master\src\twoframemodel.cpp    402

去掉std::,c库中有这个isnan

6、在Bundle2PMVS.cpp文件中会出现错误error C3861: “mkdir”: 找不到标识符的错误。

        在RadialUndistort.cpp文件中会出现error C3861: “index”: 找不到标识符的错误。

对于第一个错误的原因是:mkdir是Linux下创建目录的函数,需要两个参数,第一个是路径,第二个是权限。而Windows下则是使用_mkdir,只需要一个路径的参数,需要在文件的开头添加#include<direct.h>,同时将mkdir替换为_mkdir,如下所示:

对于第二个错误的原因:index是Linux下查找字符串中第一个出现的指定字符的函数,Windows中没有这个函数。需要使用STL中string类的方法来完成这个工作。原先的代码如下所示:

下面就可以正确的编译整个项目了。

运行Bundler

1、将路径E:\github\bundler_sfm-master\vc++\Debug中的Bundler.exe、Bundle2PMVS.exe、KeyMatchFull.exe、RadialUndistort.exe、jpeg.dll、ann_1.1_char.dll文件统统考到E:\github\bundler_sfm-master\bin目录下。

2、下载和安装Cygwin

        Cygwin是许多自由软件的集合,最初由Cygnus Solutions开发,用于在各种版本的Microsoft Windows上运行UNIX类系统。由于Bundler默认是通过在Unix环境下执行shell脚本来启动Bundler的,因为在Windows环境下需要安装Cygwin以执行shell脚本。

安装基本的组件参考http://blog.csdn.net/azkabannull/article/details/7872958

3、下载特征检测器

        Bundler推荐使用SIFT来进行特征提取,可以到SIFT的作者David Lowe的主页上下载他提供的SIFT Demo作为我们的检测器。下载页面为:http://www.cs.ubc.ca/~lowe/keypoints/或者直接点击下载地址下载:SIFT demo program(Version 4, July 2005)

        下载完成后,解压该文档,将目录下的siftWin32.exe文件拷贝到E:\github\bundler_sfm-master\bin目录中。

4、准备图片

        将要进行分析处理的图片放到一个目录里,Bundler自己也提供了两套图片,分别放在E:\github\bundler_sfm-master\examples\ET和E:\github\bundler_sfm-master\examples\kermit中。

5、运行Bundler

        打开Cygwin,cd定位到BASE_PATH目录下,然后输入下面的命令:./RunBundler.sh examples/ET 或者:./RunBundler.sh examples/Kermit

如果编译还是有问题,那就直接使用http://www.cs.cornell.edu/~snavely/bundler/distr/bundler-v0.4-source.zip

这个应该是稳定版,github上作者在更新,针对于windows的可能不是很稳定。

SfM环境的搭建windows8.1+vs2010的更多相关文章

  1. 轻松搭建Windows8云平台开发环境

    原文:轻松搭建Windows8云平台开发环境 Windows Store应用是基于Windows 8操作系统的新一代Windows应用程序,其开发平台以及运行模式和以往传统平台略有不同.为了帮助更多开 ...

  2. Win7(32bit)下Qt5.5.0和OpenCV2.4.9环境的搭建

    之前一直基于Windows平台(Win 7 32bit)使用VS2010做OpenCV的开发,现在开始学习在Windows 下使用Qt做OpenCV的开发.本文主要讲述Windows平台下(Win 7 ...

  3. win8.1 环境下搭建PHP5.5.6+Apache2.4.7

    本文主要阐述在windows8及win8.1 环境下搭建PHP5.5.6+Apache2.4.7. 1.软件准备 apache 2.4.7:http://pan.baidu.com/s/1iUPif ...

  4. Windows Phone 7 开发环境的搭建

    本节开始进行Windows Phone 开发环境的搭建,包括所需要的操作系统及硬件的介绍,开发工具的下载与安装,以及开发工具的介绍等.由于Jake Lin老师的视频中讲解的是早期的Windows Ph ...

  5. Apache Nifi在Windows环境下搭建伪群集及证书登录

    代码地址如下:http://www.demodashi.com/demo/11986.html 前些时间做了关于Apache Nifi分布式集群的搭建分享,但很多时候要搭建分布式集群机器资源是个问题, ...

  6. 【读书笔记】UEFI原理与编程(1)概述及开发环境的搭建

    一.概述: 0.为什么会有这篇文章 说实在的,在2016初的时候,我就萌生了写一个操作系统的念头,但是这对于我一个菜鸟来说,犹如登天. 既然想了就去写,即使最后做不完,也不后悔. 抱着这样的念头,我开 ...

  7. 总结:Mac前端开发环境的搭建(配置)

    新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...

  8. CentOS7 + mono +Jexus 环境的搭建

    CentOS7的安装和配置 1,从http://www.centos.org/下载CentOS7的镜像,并在VMWare中创建该镜像的虚拟机,为方便操作,把虚拟机的网络连接设置为桥接模式:在安装过程中 ...

  9. ubuntu14.04安装及web环境的搭建

    在进行接下来的工作之前首先得准备一个Ubuntu的启动U盘以及腾出一个至少50G的系统盘(在网上看到有人用20G的,不知道效果怎么样).关于Ubuntu启动U盘大家可以参考这个帖子 http://ti ...

随机推荐

  1. 374 Guess Number Higher or Lower 猜数字大小

    我们正在玩一个猜数字游戏. 游戏规则如下:我从 1 到 n 选择一个数字. 你需要猜我选择了哪个数字.每次你猜错了,我会告诉你这个数字是大了还是小了.你调用一个预先定义好的接口 guess(int n ...

  2. Focusky的下载、安装、注册和使用(动画演示大师)

    一.下载 二.安装 三.使用 四.注册 五.附录 非常感谢Focusky官方团队开发并提供实用的这么一款软件!!! 一.下载 http://www.focusky.com.cn/ 二.安装 三.使用 ...

  3. Java 8 (2) 使用Lambda表达式

    什么是Lambda? 可以把Lambda表达式理解为 简洁的表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表.函数主体.返回类型,可能还有一个可以抛出的异常列表. 使用Lambda可以让你更 ...

  4. A8ERP配送管理系统

  5. WordPress强制跳转https教程

    在互联网火热的今天,安全问题显得越来越重要,为了用户信息安全,很多热门网站都启用了https 有小伙伴就问:我启用了https,为什么访问的时候显示的还是http呢? 其实,有时候并不是因为我们ssl ...

  6. php angular/think angular/php模版引擎

    在thinphp5中发现一个好用的模版引擎—think-angular, 此模板引擎主要特点是 不需要额外的标签定义, 全部使用属性定义, 写好的模板文件在IDE格式化代码的时候很整洁, 因为套完的模 ...

  7. MxCAD5.2 20181022更新

    下载地址: http://www.mxdraw.com/ndetail_10108.html 1. 开放VIP功能,无需购买即可使用 2. 修正一些图纸打开和保存出错的问题 3. 修改填充命令,对某些 ...

  8. (C/C++学习)23.C++中指针的长度

    引言:先看下面一个程序会打印出什么? #include<iostream> using namespace std; int main() { int a = 2; int *p = &a ...

  9. 初识 MyBatis

    框架技术 使用框架构建项目,当确定使用哪个技术框架后,就已经有了一个 “半成品”,然后在这个半成品上填上内容,完成任务需求. 框架技术的优点: (1)不用再考虑公共问题,框架已经帮我们做好了. (2) ...

  10. 如何卸载 win10 自带的“电影和电视”软件

    参考这里: https://answers.microsoft.com/zh-hans/windows/forum/apps_windows_10-movies/win10%E7%9A%84%E7%9 ...