现在的位置: 首页 > 综合 > 正文

LibPaBOD(a LIBrary for PArt-Based Object Detection in C++)我在运行中遇到的问题和解决方案

2018年11月01日 ⁄ 综合 ⁄ 共 2611字 ⁄ 字号 评论关闭

Holybin的专栏有几篇关于DPM的博文,对我帮助很大:

目标检测之LatentSVM和可变形部件模型(DeformablePart
Model
DPM

http://blog.csdn.net/holybin/article/details/28292991

目标检测之LibPaBODa
LIBrary forPArt-Based Object Detection in C++

http://blog.csdn.net/holybin/article/details/28442441

同时也激发了我写博文的意愿(当然也要有东西写才行呢),而且CSDN解决了我很多学习当中的问题,我也想用我知道的来帮助其他朋友!

目标检测之LibPaBODa
LIBrary forPArt-Based Object Detection in C++
这篇博文中小试了一下:

出现错误的原因在于我的路径中有空格,这个时候将整个路径用双引号引起来即可:

通过这种方式迅速的看到了实验的效果,正如我在本博文开头贴出来的其他博客里面给出的实验结果一样。

现在入正题:我希望源代码在我自己的电脑上跑起来。

首先,源代码下载地址:http://www.uco.es/~in1majim/proyectos/libpabod/

我已经把上面的都下载下来了。大家如果遇到点击后出现另外一个网页,不能下载之类的,就多试几次,至少我是这样做的,而且最后都能够下载成功。解压后请打开“libpabod_v0.2.4_lite”,你会看到一个CMakeLists.txt的文档:

因此我们需要使用CMake:(我已经提前下载好)。在使用CMake之前,我们还需要下载MATIO。这里需要提前说明的是,刚刚给出的源代码的下载网址中作者可能有提供相应的libmatio.liblibmatio.dll等(在libmatio150
bin win.zip压缩包中),但是当我去运行程序的时候,发现还需要
matio.h头文件,于是我们需要自己去下载,至于下载哪个版本,是这样的:我给出的源代码下载链接里作者提供的是
这里有已经编译好的libmatio.liblibmatio.dll.

同时意味着我们需要下载1.5.0版本(我也是后来才明白过来的),但是如果下载的是其他的版本,也是可以的,我下载了其他的版本,遇到的一些问题先在这里描述一下:

MAT File I/O Library(matio的各种版本)的下载地址:

http://sourceforge.net/p/matio/matio/ci/v1.5.2/tree/ 

我下载的是matio-1.5.2.在这个下载网页中我们可以看到:

这说明MATIO需要依赖两个可供选择的软件optional dependencies(不知道是不是可以叫做软件,暂时这样说)zlipHDF5。由于我先看到的是这个网页:

http://blog.csdn.net/holybin/article/details/28442441

所以我提前下载好了HDF5,因此我后面的说明都不会涉及到zlip,这里提前说明一下,以免浪费大家的时间(但是后面的部分内容还是有用的)。下面需要编译matio. 编译的目的是为了生成相应版本的libmatio.lib、libmatio.dll等。关于编译,我们可以看到:

编译这步是这样的:由于我们下载的压缩包里面有一个叫visual_studio的文件夹:

打开它后,会有两个可供选择的项目,由于我运行matio.sln后有关于平台的错误(我用的是VS2010),所以我就打开了matio_vs2008.sln,进行了转换,接下来我们需要成功编译这个项目。这里可能会出现很多的错误,我在师兄的帮助下,顺利运行,下面给出我遇到问题的解决方案:

首先需要添加一些头文件(如果直接编译,会出现错误,要求你添加头文件):

打开项目属性->C/C++
选择常规后,在右边‘附加包含目录’中添加这个路径C:\ProgramFiles\HDF_Group\HDF5\1.8.13\include(你自己的HDF5的头文件路径)

并在链接器->常规中选择附加库目录添加相应的lib: C:\ProgramFiles\HDF_Group\HDF5\1.8.13\lib


最重要的是在C\C++->预处理器中,删除掉HAVE_ZLIP=1那项(因为我只有HDF5,只需要一个就可以)

选择链接器->输入,选择附加依赖项,将:

改成:


成功运行后关闭。另外需要将F:\matio-1.5.2\matio-1.5.2\visual_studio中的两个头文件:matio_pubconf.hmatioConfig.h拷贝到F:\matio-1.5.2\matio-1.5.2\src中去。

然后我们需要在F:\programForPractice\DPM-by Daniel Rodriguez Molina\libpabod_v0.2.4_lite\libpabod_v0.2.4_lite(应该说是CMakeLists所在的目录)利用CMake.(大家先别着急,我贴出的这幅图里面左列MATIO_INCLUDE_DIRS、MATIO_INCLUDE_DIRS\MATIO_LIBRARY_DIRS需要我们添加正确的路径(我贴出的是错误的,因为当时我还没下载MATIO就迫不及待的想CMake一下了,你下载了MATIO后选择正确的路径即可)):


打开项目属性->C/C++
选择常规后,在右边‘附加包含目录’中添加如下头文件:

F:\matio-1.5.2\matio-1.5.2\src

在连接器->常规中选择附加库目录添加刚刚生成的libmatio.lib等:

F:/matio-1.5.2/matio-1.5.2/visual_studio/Release

可以选择DebugRelease两个版本,生成的exeF:\programForPractice\DPM-by
Daniel RodriguezMolina\libpabod_v0.2.4_lite\libpabod_v0.2.4_lite\VS2010\bin\Release\detectobj2.exe中(我编译的是detectobj2.cpp,故生成的是detectobj2.exe)

这是我第一次写这么详细的博客,希望能够帮助到大家!


【上篇】
【下篇】

抱歉!评论已关闭.