DPM算法源程序voc-release5在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 <sys/time.h>
(因为这是Linux系统中的头文件,Windows系统中没有),再添加下面己行代码(即添加缺少的头文件和函数);
#include <time.h>
#include <windows.h>
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
,选择一个编译器即可)。
参考
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源码 - 推酷
GNU C中不为人知的特色:attribute__机制 - JuanA1的专栏 - 博客频道 - CSDN.NET
gcc __attribute((packed)) || attribute ((aligned(4))) 2 - green的专栏 - 博客频道 - CSDN.NET
C语言字节对齐(以32位系统为例)_小恺_新浪博客
DPM算法源程序voc-release5在Windows中的配置修改过程的更多相关文章
- Windows中Nginx配置nginx.conf不生效解决方法(路径映射)
Windows中Nginx配置nginx.conf不生效解决方法 今天在做Nginx项目的时候,要处理一个路径映射问题, location /evaluate/ { proxy_pass http:/ ...
- Maven在Windows中的配置以及IDE中的项目创建
Maven在Windows下的配置 1.Maven下载地址:http://maven.apache.org/download.cgi,下载红框里的版本即可. 2.解压到D盘: 3.修改配置文件sett ...
- windows中的mysql修改管理员密码
上周安装了Mysl 但是却无法登陆,找了好久才找到这个解决办法,讲的详细谢谢了. [摘要:1.my-default.ini 更名my.ini 正在解压的目次上面复造my-default.ini一份更名 ...
- 在Windows中快速配置vim
vim原本是在Linux中的编辑器,如果使用熟练写代码速度可以远高于其它编辑器 当然很多OI比赛也会要求在Linux中进行 然而: 想学Linux,首先要有一个Linux,但有了Linux,这个直播间 ...
- Windows中Nginx配置nginx.conf不生效解决方法
转:https://lucifer.blog.csdn.net/article/details/83860644?utm_medium=distribute.pc_relevant.none-task ...
- jdk在windows中的配置
1.下载jdk(java developer kit),其内部包含jre(java runtime environment): 安装解压缩到一盘内,如:G:\Program Files\Java: 2 ...
- 在windows中给git修改默认的编辑器为sublime
首先,需要配置sublime的为环境变量,这是为了让git能通过命令调用sublime.也可以写一个.bat脚本.然后,让git调用bat脚本也可以 配置环境变量path到subl.exe的目录 脚本 ...
- python---django中models配置修改数据库引擎
Django支持多种数据库,sqlite,mysql,oracle等,其默认数据库是sqlite 在settings文件中可以发现: DATABASES = { 'default': { 'ENGIN ...
- Windows中安装Linux子系统的详细步骤
早就听说Windows中可以安装Linux子系统,体验了一下,感觉还是不错的,下面直接开始安装和配置步骤吧! 开启Windows中的配置 首先开启开发者模式 打开"所有设置"进入& ...
随机推荐
- ajax实现下拉菜单无刷新加载更多
$(function() { var page = 1; var discount = $('#discount'); var innerHeight = window.innerHeight; va ...
- 了解 JS 原型
原型概念 当创建了一个函数时,就会根据一组特定的规则为该函数创建一个 prototype 属性,这个属性指向函数的原型对象.在默认情况下,所有原型对象都会自动获得一个constructor 的属性 这 ...
- 微信小程序之ES6与事项助手
由于官方IDE更新到了0.11.112301版本,移除了对Promise的支持,造成事项助手不能正常运行,解决此问题,在项目中引入第三方兼容库Bluebird支持Promise,代码已经整合到项目代码 ...
- 如何破解.net软件
.net sdk中有不少很强大的工具,可以轻易完成对.net程序的破解,只要你懂得一点IL语言就行.现在以一个 M 软件为例,介绍整个破解过程. 第零步:用反编译工具分析软件的可执行文件,制订破解逻辑 ...
- 【BZOJ 3642】Phi的反函数
http://www.lydsy.com/JudgeOnline/problem.php?id=3643 因为\[\varphi(n)=\prod_i p_i^{k_i-1}(p_i-1),n=\pr ...
- 使用antd UI 制作菜单
antd 主页地址:https://ant.design/docs/react/introduce 在使用过程中,不能照搬antd的组件代码,因为有些并不合适.首先,菜单并没有做跳转功能,仅仅是菜单, ...
- IE下get传中文乱码的问题完美解决方案
前几天做项目的时候遇到需要在easyui的combobox的url中以get的方式传中文,出现乱码. $('#cc').combobox({ url : 'xxxAction.action?para= ...
- Linux操作系统中,*.zip、*.tar、*.tar.gz、*.tar.bz2、*.tar.xz、*.jar、*.7z等格式的压缩与解压
zip格式 压缩: zip -r [目标文件名].zip [原文件/目录名] 解压: unzip [原文件名].zip 注:-r参数代表递归 tar格式(该格式仅仅打包,不压缩) 打包:tar -cv ...
- grails框架的g:paginate分页标签的使用
我用到的grails是2.4.4. 该版本下游一个标签g:paginate 该标签下有以下几个参数:total(必须要填写的项).controller.action.prev.max.offset等等 ...
- VOC2007检测任务的评估标准
VOC2007数据集使用mAP值作为检测算法检测结果的性能评估得分.mAP意思是mean Average Precision,Precision是指精度,Average Precision是指11个等 ...