zoukankan      html  css  js  c++  java
  • PMVS算法源程序 VS2008下实现

    首先构建一个空的项目pmvs,控制台应用程序,然后加pmvs2下的base下的三个文件夹拷贝到项目下,然后对应头文件及源文件添加到项目中。改写新建项目中的pmvs.cpp,将pmvs2中main里面的pmvs2.cc里面的部分内容添加到pmvs.cpp中,可以改写这个main函数的方法,不然执行的时候要传入参数。具体改写的内容下面附上大家参考。大家酌情更改。

    下一步就是在.cc文件最上方添加预编译头#include "stdafx.h",这个东西就是跟名字意思一样,先编译,也是微软特有的,对于MFC之类,include的文件非常多,这样可以加快编译速度。

    下面开始编译,这个时候会出现错误,这些错误一一解决。

    错误 7 error C2065: “M_PI”: 未声明的标识符 f:\pmvs2\pmvs2\pmvs2\image\camera.cc 316 pmvs2

    首先这个错误,这个错误的解决

    项目添加一个gsl的库,这个是c语言中的科学计算的库,在项目工具选项中添加。

    然后在项目中添加#include <gsl/gsl_math.h>

    然后消除了上面的错误之后 再一次编译

    下面会出现

    clip_image002

    好的,下面我们就重点看mylapack.cc这个文件。

    float C[M * N];这个在linux直接定义一个数据就可以了。而在windows下要先实例化,或者初始化。改为float *C = new float[M * N];

    改完了上面的错误之后再一次编译

    clip_image004

    好的,下面继续,我们就先看point.cc这个文件

    string 类型也要初始化,按照是不是应该给string类型分配一个内存空间,采用了一个迂回的办法

    string header;

    char str[1024];

    istr >> str;

    header = string(str);

    错误 1 fatal error C1083: 无法打开包括文件:“sys/time.h”: No such file or directory f:\pmvs2\pmvs2\pmvs2\pmvs\seed.cc 5 pmvs2

    这个直接注释掉,这个是linux下的库,直接用#include <time.h>

    struct timeval tv;

    gettimeofday(&tv, NULL);

    time_t curtime = tv.tv_sec;

    换成clock_t curtime = clock();

    再次编译

    clip_image006

    下面的错误就是这个线程库的问题了pthread这个线程库

    这边主要是在linux下面,这个线程的初始化为数组,这边我们改成vector,例如:

    //pthread_t threads[m_fm.m_CPU];

    vector<pthread_t> threads(m_fm.m_CPU);

    这样改好之后,下面编译基本上就没有错误了,主要就是linux下定义数组的时候不初始化,而windows下要初始化,主要这个区别

    下面基本上就是链接错误了。

    这个主要是这个pmvs程序引用了其他的库,这个时候在链接附加依赖项之后就可以编译通过,运行了。

    上面可能不同机子有点问题,要把库添加到项目中。

    https://github.com/TheFrenchLeaf/CMVS-PMVS/tree/master/program/thirdParty

    clip_image008

  • 相关阅读:
    jquery $.fn $.fx 的意思以及使用
    jQuery树形控件zTree使用
    myeclipse9.0安装svn插件
    读取properties和xml中配置文件的值
    Jquery之ShowLoading遮罩组件
    程序员需谨记的8条团队开发原则(转)
    决策树算法
    第N个丑数
    数组反转
    倒数第K个结点
  • 原文地址:https://www.cnblogs.com/fengbing/p/3044652.html
Copyright © 2011-2022 走看看