• 大小: 3KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-13
  • 语言: Matlab
  • 标签: DPM  模型转换  txt  

资源简介

如果你从我的这篇博客http://blog.csdn.net/j56754gefge/article/details/40708679里下载了DPM目标检测代码,它所使用的模型文件是保存在txt里的,而MATLAB训练出来的模型是mat文件,该函数提供将MATLAB模型保存为txt文件的m函数。

资源截图

代码片段和文件信息

#include “fun_declaration.h“

inline
void yuCheck( bool val )
{
if( !val ){
printf(“Check failure!\n“);
throw runtime_error(““);
}

}

inline
ifstream& operator>>( ifstream &ifs int &val )
{
// infinite numbers can be written into file with “inf“ markup( both in matlab and in c++ )
// but when reading from the file the “inf“ markup is not recognized as a number
string tmpS;
ifs>>tmpS;
if( tmpS==“Inf“ || tmpS==“inf“ )
val = INT_INF;
else if( tmpS==“-Inf“ || tmpS==“-inf“ )
val = -INT_INF;
else
val = (int)atoi( tmpS.c_str() );

return ifs;
}

inline
ifstream& operator>>( ifstream &ifs float &val )
{
string tmpS;
ifs>>tmpS;
if( tmpS==“Inf“ || tmpS==“inf“ )
val = FLOAT_INF;
else if( tmpS==“-Inf“ || tmpS==“-inf“ )
val = -FLOAT_INF;
else
val = (float)atof( tmpS.c_str() );

return ifs;
}

void loadModel( const string FileName MODEL &model )
// 从文件中加载model
{
ifstream MF( FileName.c_str() );
if( !MF ){
cout<<“Cannot open model file!“< throw runtime_error(““);
}

string title tmpS;
int Sz tmp;

// class
MF>>title;
yuCheck(title==“class“);
MF>>model.Class;
// year
MF>>title;
yuCheck(title==“year“);
MF>>model.year;
// note
MF>>title;
yuCheck(title==“note“);
MF>>model.note;

// filters
MF>>title;
yuCheck(title==“filters“);
MF>>Sz;
model.filters.resize( Sz );
for( int i=0; i MODEL::FILTERS F;
MF>>tmpS;
MF>>title;
yuCheck(title==“blocklabel“);
MF>>F.blocklabel;
MF>>title;
yuCheck(title==“size“);
MF>>F.size[0]>>F.size[1];
MF>>title;
yuCheck(title==“flip“);
MF>>tmp;
F.flip = (tmp!=0);
MF>>title;
yuCheck(title==“symbol“);
MF>>F.symbol;
// -1
F.blocklabel--;
F.symbol--;
model.filters[i] = F;
}

// rules
MF>>title;
yuCheck(title==“rules“);
MF>>Sz;
model.rules.resize( Sz );
for( int i=0; i MF>>tmpS;
MF>>Sz;
model.rules[i].resize( Sz );
for( int j=0; j MODEL::RULES R;
MF>>tmpS;
MF>>title;
yuCheck(title==“type“);
MF>>R.type;
MF>>title;
yuCheck(title==“lhs“);
MF>>Sz;
R.lhs.resize( Sz );
for( int k=0; k MF>>R.lhs[k];
MF>>title;
yuCheck(title==“rhs“);
MF>>Sz;
R.rhs.resize( Sz );
for( int k=0; k MF>>R.rhs[k];
MF>>title;
yuCheck(title==“detwindow“);
MF>>R.detwindow[0]>>R.detwindow[1];
MF>>title;
yuCheck(title==“shiftwindow“);
MF>>R.shiftwindow[0]>>R.shiftwindow[1];
MF>>title;
yuCheck(title==“i“);
MF>>R.i;
MF>>title;
yuCheck(title==“anchor“);
MF>>Sz;
R.anchor.resize( Sz );
for( int k=0; k MF>>tmp;
yuCheck(tmp==k+1);
MF>>R.anchor[k][0]>>R.anchor[k][1]>>R.anchor[k][2];
}
MF>>title;
yuCheck(title==“offset.blocklabel“);
MF>>R.offset.blocklabel

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        7443  2013-06-01 20:34  loadModel.cpp
     文件        5332  2013-10-24 13:01  saveModel.m

评论

共有 条评论