Meshstereo (vs2013(32位)+opencv2.4.9)代码的配置与运行过程

        为了运行meshstereo,在配置运行等方面,我算是搞得头都大了,一度都想放弃了。虽然自己几乎没有c++的编程知识,但是,贵在坚持,不放弃,似乎可以运行了!运行代码的过程中,遇到各种从未见过的bug,幸好,有互联网,有热心的网友解答,让笨笨的我可以解决bug!谢谢你们哈!笔芯!

          1.安装opencv2.4.9(已经成功安装vs2013)

         因为meshstereo用到opencv的库,所以,首先安装并配置opencv2.4.9(因为作者用的是opencv2.4.8,而官网无法下载此版本,所以,我就下载opencv2.4.9).

          关于opencv的安装与配置,我已经写过一篇博客了,其中也推荐许多优秀的博客。

          win7+vs2013+opencv2.4.9配置https://mp.csdn.net/postedit/87439673

        2.将作者的文件中的.cpp与.h加载到新的工程中(我没有直接在作者的文件中运行)

         打开vs2013--文件-新建-项目,这样,就算是有头文件,源文件,外部依赖项等。然后在头文件上右键,选择添加--现有项,然后就选择作者文件夹中的所有的.h文件;同样,在源文件上右键,选择添加--现有项,然后就选择作者文件夹中的所有的.cpp文件;对于外部依赖项,其实不用自动添加,它会随着其他的添加自动导入;资源文件,可以导入所用的图像,也可以不用导入。

         以上基本上就是加载好!(我也曾不像这样重新新建项目,直接打开作者的.sln,但是运行的过程中,有个别bug没有解决好,所以选择这样操作 )

          3.开始运行代码,解决其中的bug

           1)首先,出现无法打开文件eigen/dense,no such directory。

             经过查找网上的博客,解决方法是:

             eigen是一种库,可以计算各种数学的问题,比如矩阵的计算。因为我没有了解过,所以,不懂作者文件夹中有eigen的文件存在的意义,即调用eigen。

             按照此篇博客,下载好eigen(因为作者文件夹中已经有eigen,无需再下载),然后将路径如同文章的设置即可

              vs2013配置Eigen库 - probie的博客 - CSDN博客
              https://blog.csdn.net/u012428169/article/details/71169546

              这样,就解决好此问题了。

                2)出现无法打开文件png.h,no such directory。

                libpng - fighter_zzh的博客 - CSDN博客https://blog.csdn.net/fighter_zzh/article/details/82424484

                 按照此博客,进行设置,就可以解决好此问题。

                 3)出现无法识别外部符号,如public——void,此函数在哪里调用的意思

                  此问题的出现,我发现错误提示中出现SLC,然后与作者文件夹中的SLC文件夹联系起来,没有将slc.cpp加载到源文件中(slc.h已经在头文件中了),所以解决方法,就是在源文件上右键,选择添加,现有项,然后选择slc文件夹中的slc.cpp,这样,此问题就可以解决了。

                   4)因为作者代码用的是opencv2.4.9,所以要修改一些代码

                     在main.cpp中,如将里面的248d.lib,改成249d.lib,,这样就可以运行了。

                    5)运行代码

                     虽然代码已经可以运行,但是一运行,从main函数的开头就已经结束了,退出程序。这让我感到非常困惑。于是,我从网上百度vs2013的main(int argc,char **argv),发现里面存在很多的知识,不是简单的在vs中运行就可以了,而是要通过mi命令cmd进行运行代码的,这与之前的有所不同。可以看看此篇博客,了解一些main函数的知识。主函数main(int argc, char*argv[])中,两个参数是怎么确定的?_百度知道
https://zhidao.baidu.com/question/578063191.html?entrytime=1550670472996&word=int%20main(int%20argc%2C%20char%20**argv)%20if%20(argc!%3D5%20printf%20exit(-1))&ms=1&rid=10913156612287848647

                  首先,输入cmd,如图操作,首先输入cd/d exe的所在目录,我的是如图那样的路径;然后,exe的名称    左图的路径    右图的路径       输出深度图的路径        数字,即 mesh.exe  "I:\\实验数据\\meshstereo资料\\MeshStereoSrc\\im0.png"  "I:\\实验数据\\meshstereo资料\\MeshStereoSrc\\im1.png"  "disp.png2" 128   也就是s.exe filePathImageL filePathImageR filePathDispOut numDisps的形式。

                  出现如上图所示,就是表明代码在运行了。

猜你喜欢

转载自blog.csdn.net/qq_27690393/article/details/87822180
今日推荐