-
大小: 3KB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2021-06-13
- 語言: Matlab
- 標(biāo)簽: DPM??模型轉(zhuǎn)換??txt??
資源簡(jiǎn)介
如果你從我的這篇博客http://blog.csdn.net/j56754gefge/article/details/40708679里下載了DPM目標(biāo)檢測(cè)代碼,它所使用的模型文件是保存在txt里的,而MATLAB訓(xùn)練出來的模型是mat文件,該函數(shù)提供將MATLAB模型保存為txt文件的m函數(shù)。

代碼片段和文件信息
#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==“l(fā)hs“);
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
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????7443??2013-06-01?20:34??loadModel.cpp
?????文件????????5332??2013-10-24?13:01??saveModel.m
- 上一篇:MATLAB遺傳算法工具箱
- 下一篇:Prim法求最小生成樹
評(píng)論
共有 條評(píng)論