資源簡介
tamura texture c++ 使用openCV2.4.6 + vs2010 實現(xiàn).

代碼片段和文件信息
#include?“tamura.h“
#include?“fstream“
#define PI (3.141592653589793)
class?MYERROR:?public?runtime_error{
public:?
MYERROR(const?char?*?msg?=?“?“):?runtime_error(msg){}
};
void?disMat(?Mat?mat??string?path?){
if(?NULL?==?mat.data?){
throw?MYERROR(“?“)?;
}
int rows = mat.rows?;
int?cols = mat.cols?;
fstream out?;?
out.open(?path??ios::out?|?ios::app?)?;
for(?int?i?=?0?;?i? for(?int?j?=?0?;?j? if(?mat.type()?==?CV_64FC1?){
?double?temp = *(double*)(?mat.data?+?i?*?mat.step.p[0]?+?j?*?mat.step.p[1]?)??;
?out?< }
else{
out?<(int)*(?mat.data?+?i?*?mat.step.p[0]?+?j?*?mat.step.p[1]?)?<‘\t‘?;
}
}
out?< }
out.close()?;
}
TAMURA::TAMURA(?Mat&?mat??int?inkValue??int?inhistBins?){
imgMat = mat?;?
kValue = inkValue?;?
histBins = inhistBins?;
coarHist = new?double[histBins]?;
coarseness = 0?;?
contrast = 0?;
directionality = 0?;
calFeatures()?;
}
//======================================================
/// constructor
//======================================================
TAMURA::TAMURA(?const?string&?imgPath??int?inkValue??int?inhistBins?){
imgMat = imread(?imgPath??0?)?;
kValue = inkValue?;?
histBins = inhistBins?;
coarHist = new?double[histBins]?;
coarseness = 0?;?
contrast = 0?;
directionality = 0?;
calFeatures()?;
}
//====================================================
///?deconstructor
//====================================================
TAMURA::~TAMURA(){
if(?NULL?!=?coarHist?){
delete?[]?coarHist?;
coarHist = NULL?;
}
}
//======================================================
/// calculate?features
//======================================================
void?TAMURA::calFeatures(?void?){
//?coarseness?
coarseness = calCoarseness(?imgMat??coarHist??kValue??histBins?)?;
//?constrast
contrast = calContrast(?imgMat?)?;
//directionality
directionality = calDirectionality(?imgMat?)?;
}
//=====================================================
///?calculate?coarseness?for?a?greylevel?image
//=====================================================
double?TAMURA::calCoarseness(?Mat&?mat??double*?coarHist??int?kVal???int?histBins?){
if(?NULL?==?mat.data?){
throw?MYERROR(?“?mat?is?empty?“?)?;
}
if(?kVal? throw?MYERROR(?“?input?parameters?error?!!“?)?;
}
//?mats?for?average?horizonal?and?vertical?engergy?differece??with?size?k*k
Mat *AverK = new?Mat[kValue]?;
Mat *EnKh = new?Mat[kValue]?;
Mat?*EnKv = new?Mat[kValue]?;
for(?int?i?=?0?;?i? AverK[i] = Mat::zeros(?mat.size()??CV_64FC1?)?;
EnKh[i] = Mat::zeros(?mat.size()??CV_64FC1?)?;
EnKv[i] = Mat::zeros(?mat.size()??CV_64FC1?)?;
}
int rows = mat.rows?;?
int cols = mat.cols?;
int lenOfk = 1?;
//step?1?:?sum?over?different?window?size
for(?int?i?=?0?;?i?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????13482??2013-08-04?20:47??Tamura?texture?C++\tamura.cpp
?????文件????????1082??2013-08-04?20:47??Tamura?texture?C++\tamura.h
?????目錄???????????0??2013-08-04?20:48??Tamura?texture?C++\
- 上一篇:用C語言編寫二叉排序樹
- 下一篇:VB、C++機房管理程序
評論
共有 條評論