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系统上缺少这样的定义);

  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源码 - 推酷

GNU C中不为人知的特色:attribute__机制 - JuanA1的专栏 - 博客频道 - CSDN.NET

gcc __attribute((packed)) || attribute ((aligned(4))) 2 - green的专栏 - 博客频道 - CSDN.NET

C语言字节对齐(以32位系统为例)_小恺_新浪博客

来自为知笔记(Wiz)

时间: 2024-08-28 13:49:08

DPM算法源程序voc-release5在Windows中的配置修改过程的相关文章

Maven在Windows中的配置以及IDE中的项目创建

Maven在Windows下的配置 1.Maven下载地址:http://maven.apache.org/download.cgi,下载红框里的版本即可. 2.解压到D盘: 3.修改配置文件settings.xml. a)修改为阿里云的镜像,国内的镜像下载速度会快很多. <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://m

windows中完整配置svn服务

1.准备工作: 下载 subversion: Setup-Subversion-1.8.13.msi 参考地址: http://sourceforge.net/projects/win32svn/files/1.8.13/ 下载 TortoiseSVN: TortoiseSVN-1.8.11.26392-x64-svn-1.8.13.msi 参考地址: http://tortoisesvn.net/downloads.html * 下载后直接安装,不需要特别进行配置 * subversion的版

在Windows中快速配置vim

vim原本是在Linux中的编辑器,如果使用熟练写代码速度可以远高于其它编辑器 当然很多OI比赛也会要求在Linux中进行 然而: 想学Linux,首先要有一个Linux,但有了Linux,这个直播间又不能用了 很多软件并不支持Linux,导致用Linux有时很不方便 所以,如果只是想学习vim的使用,可以用它的Windows移植版,使用体验和方法和Linux中的相差无几 1.安装vim 先从这里下载vim 我是选的这个版本,不过应该都差不多 然后根据提示一步步安装就行,可以选典型安装,不过快捷

Windows中安装Linux子系统的详细步骤

早就听说Windows中可以安装Linux子系统,体验了一下,感觉还是不错的,下面直接开始安装和配置步骤吧! 开启Windows中的配置 首先开启开发者模式 打开"所有设置"进入"更新和安全" 选择左侧的"开发者选项",然后选择"开发者模式" 然后打开"适用于Linux的Windows子系统" 在控制面板中打开"程序和功能"窗口 点击左侧"启用或关闭Windows功能"

VS2015--win32工程配置的一些想法之算法min/max与windows中的 min/max宏冲突

今天还是配置一个工程,遇到了这个问题,使用min时提示:输入正确的标识符. 看下面的代码: #include<iostream> #include<Windows.h> #include<algorithm> int main() { auto it = std::min(1, 2);//错误,应输入标识符 return 0; } 如果把windows的头文件注释掉就不会发生错误. 问题的原因就是algorithm中的std::min与windows中min的宏定义产生

如何在Windows中编译Linux Unix的代码(采用cygwin)?

来源:http://www.cnblogs.com/rocky_yi/archive/2009/12/08/cygwin.html   作者:rocky_y 很多经典算法往往是用C++在linux下实现的,对长期从事windows开发的辛苦大众来说,想看这些算法的运行效果不得不费一点小功夫.今天捣鼓了一晚上才搞定这事,写出实现方法和大家共享. 第一步:下载安装新版Cygwin软件.该软件的官方网站:http://cygwin.com/  Cygwin软件的作用是让Windows拥有Unix-li

如何在Windows中编译Linux Unix的代码?

作者:rocky_yi  转自http://www.cnblogs.com/rocky_yi/archive/2009/12/08/cygwin.html 很多经典算法往往是用C++在linux下实现的,对长期从事windows开发的辛苦大众来说,想看这些算法的运行效果不得不费一点小功夫.今天捣鼓了一晚上才搞定这事,写出实现方法和大家共享. 第一步:下载安装新版Cygwin软件.该软件的官方网站:http://cygwin.com/  Cygwin软件的作用是让Windows拥有Unix-lik

windows中使用mysql配置my.ini时的坑

windows中安装mysql的一般步骤: mysql版本:5.7.16 1.解压 2.把解压的文件夹bin目录地址添加到环境变量PATH里面 3.在文件加中添加配置文件my.ini--配置内容后面说,坑的所在 3.cmd(管理员模式)cd到bin目录里,执行命令 mysqld -install mysql --default-file= my.ini的物理路径 (这句命令是添加mysql服务,并把my.ini设为配置文件) 4.第3步成功后,继续执行命令 mysqld --initialize

Centos开机自动挂载windows中的ntfs磁盘

装了windows和centos双系统后,发现在centos中无法进入windows中的磁盘,更不要说查看磁盘里的文件了! 原来默认情况下,centos不支持Widows NTFS硬盘分区读写,要想把NTFS格式的磁盘挂载到CentOS 下面需要安装第三方软件ntfs-3g.那么如何实现挂载并开机自动挂载呢? 一.下载ntfs-3g 源码包进行编译安装 下载地址:http://down1.chinaunix.net/distfiles/ntfs-3g-1.2918.tgz 1.安装编译工具 yu