文章:Real-Time Human Detection Using Contour Cues
代码名称:Pedestrian_ICRA
得到代码之后,第一时间是查看作者提供的README文件,如下所示:
上图画黄色部分就是我们要重点关注的地方,这些地方说明,这段代码可以在ubuntu环境下用系统自带的g++跑,并且需要OPENCV的支持,满足这两个条件,就可以在终端输入make得到detect程序,接下来运行detect程序即可。
这段文字看上去很简单,ubuntu系统+opencv环境,但事实上在配环境和运行所花的时间比想象的要多得多。
为什么?因为作者所用的操作系统版本,软件版本以及很多复杂的库等等都可能与你目前的配置完全不同,这时候贸然的去CSDN找g++,make,opencv等的配置方法可能会浪费很多时间。所以我们可以先在文章的Experimence部分看看作者有没有介绍相关的配置信息,下图是另外一篇文章的截图,截图是作者对配置的详细介绍:
因此,我们也来看看,这篇行人检测有没有提供配置指南,如下图:
很可惜,作者没有提供关于ubuntu系统的版本和opencv的版本,甚至说,里面提供的配置信息非常有限,基本都是在描述自己提出c4特征的性能,所以我们为了节省时间,还有一个办法,我们发现,代码里面提供了ubuntu版本和window版本,我们在window版本里面可以发现这么一条信息:
黄色的这句话的意思是说:我使用的是opencv2.2的版本,那么如果想节省时间的话,那么在window系统下配合opencv2.2就可以了。
但是如果用window跑opencv的话得配合VS使用,作者没有提供VS的具体配置,这可能就更麻烦了,为了不这么麻烦,硬着头皮用ubuntu系统跑可不可以呢?
其实也是可以的,首先我们可以根据我们的ubuntu系统寻找合适的opencv安装包,比如我的ubuntu系统是16.0.4,64位,那么我就可以在网站下载相应的包,这里提供OPENCV以及opencv_contrib的下载地址:
opencv源码下载地址:
https://github.com/opencv/opencv/releases
contrib源码下载地址:
https://github.com/opencv/opencv_contrib/releases
具体的安装过程很多博客上面都有,这里分享一篇比较靠谱的博客:
https://blog.csdn.net/ksws0292756/article/details/79511170(写的比较详细,比较适合我的系统)
重点:
现在我们终于满足了作者的要求,但是由于我们的操作系统和OPENCV版本都不是作者使用的,所以可能会遇到各种各样的问题,下面简单讲一下我遇到的问题及解决办法。
最初遇到的是这个问题,我很纳闷我的opencv已经安装好了,为何会找不到cxtypes.h,这时搜索网上的办法会让你安装这个文件,但是这个文件不是这么好找的,又来发现cxtypes.h是在opencv低版本中出现的,高版本的opencv已经用其他文件包含了cxtypes.h里面的代码,那我们只要在源代码中删去就可以了,然而我们查看了各种cpp和h文件,里面并没有包含这个库,这种时候我们可以借助强大的sublime文件帮我们找出来,如下图所示:
对着文件夹(不要对着里面的文件)点击右键,点击在文件夹中查找,输入cxtypes,就找到了结果
,原来在隐藏文件.deps里面,这样我们只要在根目录按Ctrl+h让隐藏文件现形,然后将里面多余的语句删去就可以了。
然后又出现了第二个问题,在输入make按回车后,出现了下面的情况:
这个错误产生的原因是链路不匹配,也就是调用opencv的时候,不能找到opencv里面这些封装好的函数,但是配置路径让文件夹指向opencv实在是比较麻烦,我们可以看到终端里面有这么一句话:
我们都知道,makefile文件其实就是代替了我们手动打这些指令的过程,很明显,makefile文件在代替我们输入上述指令的时候跑不通,那么我们只要在终端手动打这段话(复制粘贴),然后加上链接opencv的指令即可,也就是在在pkg-config 和--libs之间加入--cflags就可以了,最后我们可以得到程序detect了,但是这还没完,只完成了一半而已,一般来说,这种时候如果我们输入./detect,往往一个结果也没有,这时候就需要深入了解主代码的结构了,如下图所示:
这段代码是说,我们得自己新建一个名为video2的文件夹,并且把图片放进去才行,不过这都是小问题,在得到程序之后,记得查看一下main.cpp函数里面的主函数,这个函数往往是整份代码的第二个README文件。
那么就先分享到这里,哪里说的不对请各位CV大神批评指正。