Windows运维之DPM算法源程序voc-release5在Windows中的配置修改过程
小标 2018-09-03 来源 : 阅读 1367 评论 0

摘要:本文主要向大家介绍了Windows运维之DPM算法源程序voc-release5在Windows中的配置修改过程,通过具体的内容向大家展现,希望对大家学习Windows运维有所帮助。

本文主要向大家介绍了Windows运维之DPM算法源程序voc-release5在Windows中的配置修改过程,通过具体的内容向大家展现,希望对大家学习Windows运维有所帮助。


  最近的《视频处理与分析》课程中有一个大作业,是有关DPM物体检测算法的。网上有DPM的源代码,但是原版只能在Linux或Mac上运行,而我的电脑是Windows系统,于是在网上搜了一下在怎样Windows在运行,最后通过一些代码的修改,可以在Windows上正常运行,下面记录我的修改过程。
DPM源程序下载:Discriminatively Trained Deformable Part Models (Release 5)  
我下载的是voc-release5版本。
voc-release5原版并不支持在Windows系统中编译运行,但只需进行以下几项代码修改即可完美解决。
源代码修改步骤
1. 修改features目录下的features.cc文件:在所有#include下面添加下面两行代码(因为Windows系统上缺少这样的定义);  
#define bzero(a, b) memset(a, 0, b) 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行  
alphainfo ofs[len];
改为
struct alphainfo *ofs = (struct alphainfo *)malloc(sizeof(struct alphainfo)*len);
再在第80行后(该函数最后)添加一行
free(ofs);
3. 修改fv_cache目录下的fv_compile.m文件:将第13~15行代码注释掉(即允许在Windows系统上编译);
4. 修改gdetect目录下的bounded_dt.cc文件:在所有#include下面添加下面两行代码(同样是因为Windows系统上缺少这样的定义);  
#define int32_t int#define INFINITY 1e8
5. 修改gdetect目录下的dt.cc文件:在所有#include下面添加下面一行代码(同样是因为Windows系统上缺少这样的定义);  
#define int32_t int
6. 修改star-cascade目录下的cascade.cc文件:在所有#include下面添加下面一行代码(同样是因为Windows系统上缺少这样的定义);  
#define INFINITY 1e8
7. 修改star-cascade目录下的cascade_compile.m文件:将第13~15行代码注释掉(即允许在Windows系统上编译);
8. 修改star-cascade目录下的timer.h文件:删掉第6行代码#include (因为这是Linux系统中的头文件,Windows系统中没有),再添加下面己行代码(即添加缺少的头文件和函数);  
#include #include int gettimeofday(struct timeval *tp, void *tzp){    time_t clock;    struct tm tm;    SYSTEMTIME wtm;    GetLocalTime(&wtm);    tm.tm_year     = wtm.wYear - 1900;    tm.tm_mon     = wtm.wMonth - 1;    tm.tm_mday     = wtm.wDay;    tm.tm_hour     = wtm.wHour;    tm.tm_min     = wtm.wMinute;    tm.tm_sec     = wtm.wSecond;    tm. tm_isdst    = -1;    clock = mktime(&tm);    tp->tv_sec = clock;    tp->tv_usec = wtm.wMilliseconds * 1000;    return (0);}
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,选择一个编译器即可)。   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注系统运维windows频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程