voc-release5在window下编译总结

采用matlab2012a, vs2013和2013编译器:

(1)resize.cc features.cc :

实现round函数 : inline int round(float a){return ((int)(a + 0.5f));}

同时:#define bzero(a, b) memset(a, 0, b)

基本的c++编程错:

alphainfo *ofs = new alphainfo[len]; // c++不支持变量类型的数组大小定义

............

delete []ofs;

ofs = NULL;

(2)fv_cache: sigaction // 注释fv_cache.cc中所有相关代码;

fv_compile.m:

% if ispc

%   error('This code is not supported on Windows.');

% end      // 注释掉 compile.m中对应语句类似处理

model.h:#define INFINITY INT_MAX

obj_fun.cc:

基本的c++错:

double *hnrms2 = new double[M.num_components];

..........

delete []hnrms2;

hnrms2 = NULL;

double *pc = new double[M.num_components];

...................

delete []pc;

pc = NULL;

(3) gdetect

bounded_dt.cc, dt.cc:typedef int int32_t;

#define INFINITY INT_MAX

fconvsse.cc, fcon_var_dim_MT.cc:

将gdetect_dp.m中进行如下修改与注释:

%if size(pyra.feat{level},3) == 32

% Faster SSE version (fconvsse.cc) that can only handle 32-dim features

%   r = fconv(pyra.feat{level}, filters, 1, length(filters));

% else

% More general convolution code to handle non-32-dim features

% e.g., the HOG-PCA features used by the star-cascade

r = fconv_var_dim(pyra.feat{level}, filters, 1, length(filters));              // 直接调用fconv_var_dim.mex64

% end

如需用fconvsse.cc,则部分更改如下:

#include "pthread.h"

#pragma comment(lib, "pthreadVC.lib") // 支持windows下的pthread线程库

....................

//_m_empty();        // 注释掉,该函数清楚寄存器

float *F = (float *)_aligned_malloc(dims[0]*dims[1]*NUM_FEATURES*sizeof(float), 16); // _aligned_malloc为系统api

(4)star-cascade

cascade.cc :#define INFINITY INT_MAX

cascade_compile.m

% if ispc

%   error('This code is not supported on Windows.');                    // 注释掉,判断平台类型

% end

timer.h:

#include

#include

#include

// 定义timer结构体

class timer {

struct timeval {

long tv_sec;

long tv_usec;

};

// 定义gettimeofday函数

private:

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);

}

(5) eval函数:

try

eval(mexcmd);

catch e

end

(6)utils

procid.m:

i = strfind(d, '\');

(7)compile.m:

% if ispc

%   error('This code is not supported on Windows.');

% end

try///////////////////////////////////////

if nargin < 3

% Build feature vector cache code

fv_compile(opt, verb);

% Build the star-cascade code

cascade_compile(opt, verb);

eval([mexcmd ' features/resize.cc']);

eval([mexcmd ' features/features.cc']);

eval([mexcmd ' gdetect/dt.cc']);

eval([mexcmd ' gdetect/bounded_dt.cc']);

eval([mexcmd ' gdetect/get_detection_trees.cc']);

eval([mexcmd ' gdetect/compute_overlap.cc']);

% Convolution routine

%   Use one of the following depending on your setup

%   (0) is fastest, (2) is slowest

% 0) multithreaded convolution using SSE

%eval([mexcmd ' gdetect/fconv.cc']);

% 1) multithreaded convolution

%eval([mexcmd ' gdetect/fconv_var_dim_MT.cc -o fconv']);

% 2) basic convolution, very compatible

% eval([mexcmd ' gdetect/fconv_var_dim.cc']);

% Convolution routine that can handle feature dimenions other than 32

% 0) multithreaded convolution

%eval([mexcmd ' gdetect/fconv_var_dim_MT.cc']);

% 1) single-threaded convolution

eval([mexcmd ' gdetect/fconv_var_dim.cc']);//////////////////////////////////////////////////////////////////////单线程,非sse版本

else

eval([mexcmd ' ' mex_file]);

end

catch e                  ////////////////////////////////////////////////////////////////////////////////////////

warning(e.identifier, 'dddd');

end//////////////////////////////////////////////////////////////

(8)demo.m:

%compile;

(9)pascal.m

diary(conf.training.log([cls '-' timestamp])); // 注释掉,报错

(10)voc_config.m

BASE_DIR    = 'f:/code';

conf = cv(conf, 'pascal.dev_kit', [conf.paths.base_dir '/VOCdevkit/']);  // 注意配置这几句, VOCdevkit路径

(11)出现系统奔溃问题:

解决方法:resize()函数改成imresize()函数

(12)出现features函数参数数据不匹配的问题

解决方法:重新编译,运行compile,知道编译通过

(13)出现找不到头文件问题:

解决方法:将#include 改成#include

(14)第五版本的模型与其它版本模型差距较大,如需转换成VS可识别文件,建议使用第五版本。

参考链接:地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容