美文网首页
InfiniTAM在Windows10的配置

InfiniTAM在Windows10的配置

作者: 听风轻咛 | 来源:发表于2018-11-16 18:36 被阅读51次

    cmake

    cmake

    image_1cs8jshp9oon56lj691ugooet9.png-302kBimage_1cs8jshp9oon56lj691ugooet9.png-302kB

    直接下载exe文件安装;

    opengl

    OpenGL只是一个标准,它的实现一般自带在操作系统里,只要确保显卡驱动足够新就可以使用。如果需要在程序里直接使用OpenGL,会有很多非常恶心的预备工作要做,而且可能还要专门为平台的差异写一些代码。要跳过这些工作,可以用一个utility库,直接使用它提供的函数,就不用操心那些细节了。这样的库新一点的有GLEW,因为开源所以安装相对方便(大不了丢进去一起编译),但各种教程和书里常见的是闭源的GLUT。由于GLUT的作者已经很久没更新过了(最后更新于2000年!= =),所以其他人另外做了一个接口兼容GLUT的freeglut,开源而且一直在维护中。
    在 Windows 下可以安装 GLUT 或者 freeglut 其中的一个,不过建议安装后者。在 Ubuntu 下安装 freeglut即可。

    freeglut

    1. 先介绍一种方法,使用MinGM

    在Windows/Ubuntu下安装OpenGL环境GLUT/freeglut

    • 下载MinGW,请自行解决,这里不再赘述;
    • 点击下载freeglut3.0.0 for MinGW

    注意!在64位版本的windows 7 下,win32版的freeglut.dll要放入sysWoW64,而x64版本的要放入system32。因为system32中的动态链接库其实是原生64位版本的。而为了兼顾兼容性,才有了sysWoW64,这个目录中存放的反而是32位的链接库。

    ```
    C:\Windows\SysWOW64
    └─ freeglut.dll(32位的mingw就用bin目录下那个,不是bin/x64那个)
    D:\mingw
        ├─ include
        │   └─ GL
        │      ├─ freeglut.h
        │      ├─ freeglut_ext.h
        │      ├─ freeglut_std.h
        │      └─ glut.h (注意这个和老版的glut.h不同)
        └─ lib
            ├─ libfreeglut.a (这两个同样用lib目录下的两个)
            └─ libfreeglut_static.a
    ```
    

    2. 如果上面的不可以,使用VS

    没关系,windows就是这么坑,本人混迹Mac,Ubuntu各种操作系统未曾见过如此坑的(对开发者不友好),各种版本问题;吐槽结束,我们用微软的软件搞一下;

    Freeglut在windows 7 64bit + visual studios 2010下的安装与配置
    用 Visual C++ 2015 编译 FreeGLUT

    • 下载freeglut(本人是2.8.1版本)
      用Visual Studio 2013打开freeglut.sln文件,注意不要使用太高版本的VS,否则编译不成功,接下来编译就好了;


      image_1csalgl8h1api171ckg01bb4dfl9.png-72.8kBimage_1csalgl8h1api171ckg01bb4dfl9.png-72.8kB
    • 几个重要的步骤就是复制dll和lib

      1. 然后进入“freeglut-2.8.1\lib”。分别复制x64和win32下的freeglut.dll文件到“C:\windows\system32”和“C:\windows\sysWoW64”下。
        强行安行第二次注意,这里一定要搞清楚;

        注意!在64位版本的windows 7 下,win32版的freeglut.dll要放入sysWoW64,而x64版本的要放入system32。因为system32中的动态链接库其实是原生64位版本的。而为了兼顾兼容性,才有了sysWoW64,这个目录中存放的反而是32位的链接库。
        2. 接着分别将x64和win32目录下的两个freeglut.lib放入“D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\amd64”和“D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib”。这里就是正常对应的。
        3. 最后将“\freeglut-2.8.1\include”下的“GL”目录复制到“D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include”即可。
        4. 测试工程,网上找个glut的代码自己编一下吧!

    这就成功了!这就成功了!

    InfiniTAM

    重点来啦,前提是上面的你必须解决,否则你也将有更多的坑要踩,排除好嘛,排除法!!!

    搞定驱动

    既然要用到深度相机,首先要搞定硬件的驱动程序,把深度相机的Demo跑起来就算是成功了!

    我这里用到的是Kinect V1设备,于是上网找kinect for sdk驱动程序,注意一下版本,具体只能试了;查了一下貌似Kinect SDK2对硬件有要求,觉得还是用v1的驱动(远离高版本),网上给出了两个下载,一个是v1.8的驱动Kinect for Windows SDK v1.8和一个开发者工具包toolkitKinect for Windows Developer Toolkit,下载下来安装。

    image_1csan745clgk1r9k10jk1oqj8g2j.png-35.3kBimage_1csan745clgk1r9k10jk1oqj8g2j.png-35.3kB

    接下来打开openni的示例程序,NiViewer,出来深度图你就搞定了!!!哈哈哈,图像分左右,左边是深度图,右边是本人;
    一个小秘籍:测试demo跑不出来,大概率是驱动出了问题,查版本去吧!!!(是不是暴露了win的版本兼容很成问题,微软自己的软件啊这可是)

    image_1csan9pu1jqu1653s7ko1dbi50.png-181.3kBimage_1csan9pu1jqu1653s7ko1dbi50.png-181.3kB

    搞定工程

    接下来就是用cmake打开你的InfiniTAM工程,并生成build路径,如图;

    image_1csb48hqc1tka1kt2aaest1l3h5t.png-83.9kBimage_1csb48hqc1tka1kt2aaest1l3h5t.png-83.9kB

    error MSB3073: The command setlocal问题

    打开后build,出现error MSB3073: The command setlocal这个问题,貌似很棘手,下午4点,开始研究中,先搞杯咖啡去。。。
    上面的这个问题卡了大哥一下午,现在已经是晚上七点,哥还在搞这个问题,现在正在下vs2010,准备编译一下freeglut2.8.0版本,之前用的是2.8.1,因为看到工程项目里说是用2.8.0或者3.0.0,之前用3.0.0没有成功,这个版本问题真的是坑;

    接下来出现了三种解决方法:

    1. 如果编译出现这个错误估计是版本不太不同造成的,双击错误来到错误的地方,删除让你错误的那行,编译没必要搞那么复杂,编译通过,但是生成的程序仍然不能运行;
    2. 默认的 CMAKE_INSTALL_PREFIX 是 C 盘,没有权限。修改 CMAKE_INSTALL_PREFIX到非当前文件夹即可。修改这个路径是不起任何作用的;
    3. 解决办法:(install)项目–>属性–>生成事件–>后期生成事件–>在生成中使用–>否,这个修改了之后也是同第一种,减少了一个cmake命令;

    总之以上虽然解决了编译的问题,但是TAM程序还是未能启动,现在是第二天上午10点,这个问题还在这里卡着。。。

    运行过程出现cannot find or open the PDB file

    这个是调试器的问题,直接按ctrl + F5解决,很恐慌,以为又要遇到什么大坑。

    还是找不到驱动的问题

    image_1csd5di1a155s1ddmhsdvkj1rq69a.png-332.5kBimage_1csd5di1a155s1ddmhsdvkj1rq69a.png-332.5kB

    从驱动下手,然而我跑kinect的测试程序NiViewer是成功的啊,我想可能是这个程序的驱动要求不匹配造成的;

    使用Visual Studio编译中的问题

    1. include移到系统库
      C:\Program Files(x86)\Windows Kits\10\Lib

    2. 添加Visual Studio工具并支持Visual C++ 64位编译器

    3. 解决打开以前版本工程不兼容问题,打开vs, 点击工具->扩展和更新,在弹出的对话框左侧单机联机,在右侧输入installer关键词,内容截屏如下,下载Microsoft Visual Studio 2015 Installer Projects;

    4. 提示找不到OpenNI2.dll,如下图所示,


      image_1cs8to8mhs2gptu19k9pulju5m.png-13.9kBimage_1cs8to8mhs2gptu19k9pulju5m.png-13.9kB

      在OpenNI2安装目录bin中找到该文件复制到提示的路径下;

    5. 不是有效的win32应用程序怎么解决,这可能是你的.dll真的不符合它们的要求,从dll文件下手吧;


      image_1cs8u2h8q6dk10m1gje1gps193r2j.png-50.1kBimage_1cs8u2h8q6dk10m1gje1gps193r2j.png-50.1kB

    相关文章

      网友评论

          本文标题:InfiniTAM在Windows10的配置

          本文链接:https://www.haomeiwen.com/subject/eufvfqtx.html