voc-release5Windows下配置,亲测可用

我下载的是voc-release5版本。

voc-release5原版并不支持在Windows系统中编译运行,但只需进行以下几项代码修改即可完美解决。

源代码修改步骤

1. 修改features目录下的features.cc文件:在所有#include下面添加下面两行代码(因为Windows系统上缺少这样的定义);

 
 
    1. #define bzero(a, b) memset(a, 0, b)
    2. int round(float a) { float tmp = a - (int)a; if( tmp >= 0.5 ) return (int)a + 1; else return (int)a; }

2. 修改features目录下的resize.cc文件:同样添加上面两行代码,再将第39行

 
 
    1. alphainfo ofs[len];

改为

 
 
    1. struct alphainfo *ofs = (struct alphainfo *)malloc(sizeof(struct alphainfo)*len);

再在第80行后(该函数最后)添加一行

 
 
    1. free(ofs);

3. 修改fv_cache目录下的fv_compile.m文件:将第13~15行代码注释掉(即允许在Windows系统上编译);

4. 修改gdetect目录下的bounded_dt.cc文件:在所有#include下面添加下面两行代码(同样是因为Windows系统上缺少这样的定义);

 
 
    1. #define int32_t int
    2. #define INFINITY 1e8

5. 修改gdetect目录下的dt.cc文件:在所有#include下面添加下面一行代码(同样是因为Windows系统上缺少这样的定义);

 
 
    1. #define int32_t int

6. 修改star-cascade目录下的cascade.cc文件:在所有#include下面添加下面一行代码(同样是因为Windows系统上缺少这样的定义);

 
 
    1. #define INFINITY 1e8

7. 修改star-cascade目录下的cascade_compile.m文件:将第13~15行代码注释掉(即允许在Windows系统上编译);

8. 修改star-cascade目录下的timer.h文件:删掉第6行代码#include <sys/time.h>(因为这是Linux系统中的头文件,Windows系统中没有),再添加下面己行代码(即添加缺少的头文件和函数);

 
 
    1. #include <time.h>
    2. #include <windows.h>
    3. int gettimeofday(struct timeval *tp, void *tzp)
    4. {
    5. time_t clock;
    6. struct tm tm;
    7. SYSTEMTIME wtm;
    8. GetLocalTime(&wtm);
    9. tm.tm_year = wtm.wYear - 1900;
    10. tm.tm_mon = wtm.wMonth - 1;
    11. tm.tm_mday = wtm.wDay;
    12. tm.tm_hour = wtm.wHour;
    13. tm.tm_min = wtm.wMinute;
    14. tm.tm_sec = wtm.wSecond;
    15. tm. tm_isdst = -1;
    16. clock = mktime(&tm);
    17. tp->tv_sec = clock;
    18. tp->tv_usec = wtm.wMilliseconds * 1000;
    19. return (0);
    20. }

9. 修改compile.m文件:将第13~15行代码注释掉(即允许在Windows系统上编译),再注释掉第64行并取消注释第68行(即选择编译fconv_var_dim.cc而不是fconvsse.cc),再注释掉第72行并取消注释第74行(即选择编译fconv_var_dim.cc而不是fconv_var_dim_MT.cc),再将所有的-o改为-output

按上述步骤修改完之后,在Matlab中运行demo.m即可(如果你的Matlab还没有配置mex的话,需要提前配置一下,即在Matlab命令窗口执行mex -setup,选择一个编译器即可)。

参考

DPM目标识别 windows 下配置_moran_新浪博客 
linux下gettimeofday函数windows替换方案_CastleintheSky_新浪博客 
matlab中 mex -o 中的“-o”是什么意思,为什么会出错。_百度知道 
VS2008和VC6.0下使用pthread.h头文件 | 学步园 
在Windows下运行Felzenszwalb的star-cascade DPM(Deformable Part Models)目标检测Matlab源码 - 推酷 

发布了36 篇原创文章 · 获赞 45 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/u012154840/article/details/78926701