資源簡介
圖像特征提取代碼,包括LBP、HOG、Haar、Zernike矩、Hu矩特征,.h文件有如何調用的詳細說明,C/OpenCV程序

代碼片段和文件信息
#include?“stdafx.h“
#include?“HaarFeature.h“
#pragma?once
#include?“.\\include\cv.h“
#include?“.\\include\highgui.h“
#include?“.\\include\cxcore.h“
#pragma?once
#pragma?comment(lib“cv210.lib“)
#pragma?comment(lib“highgui210.lib“)
#pragma?comment(lib“cxcore210.lib“)
HaarFeature::HaarFeature()
{
IntgData?=?NULL;
HaarVec?=?NULL;
imageSize.x=0;
imageSize.y=0;
FeatureLength?=?0;
HaarFeatureLength?=0;
}
HaarFeature::~HaarFeature()
{
ReleaseMemIntgImg();
ReleaseMemFeaVec();
}
bool?HaarFeature::ReleaseMemIntgImg()
{
if(IntgData!=NULL)
{
free(IntgData);
IntgData=NULL;
}
return?true;
}
bool?HaarFeature::AllocMemIntgImg()
{
ReleaseMemIntgImg();
if(imageSize.x==0||imageSize.y==0)
return?false;
IntgData?=?(double*)calloc(imageSize.x*imageSize.ysizeof(double));
return?true;
}
bool?HaarFeature::ReleaseMemFeaVec()
{
if(HaarVec!=NULL)
{
free(HaarVec);
HaarVec=NULL;
}
return?true;
}
bool?HaarFeature::AllocMemFeaVec()
{
ReleaseMemFeaVec();
if(HaarFeatureLength==0)
return?false;
HaarVec?=?(double*)calloc(HaarFeatureLengthsizeof(double));
return?true;
}
void?HaarFeature::CalcIntgImg(IplImage?*image)
{
AllocMemIntgImg();
double?*pData?=?IntgData;
//轉Gray
IplImage?*imageGray?=?cvCreateImage(cvSize(image->widthimage->height)81);
if(image->nChannels==3)
cvCvtColor(imageimageGrayCV_BGR2GRAY);
else
cvCopy(imageimageGray);
///////第一行////
double?count(0);
for(int?i=0;i {
count?+=?((uchar*)(imageGray->imageData))[i];
*pData++?=?count;
}
//////后面各行/////
double?*pPreData;?
for(int?i=1;i {
pPreData?=?pData?-?imageSize.x;?
count?=?0;
for(int?j=0;j {
count?+=?((uchar*)(imageGray->imageData?+?imageGray->widthStep*i))[j];
*pData++?=?*pPreData++?+?count;
}
}
cvReleaseImage(&imageGray);
}
/////////////////////////////////////////////////////////////////////////////////
void?HaarFeature::GetFeatures()
{?
GetFeatureLength();
AllocMemFeaVec();
double?*pFeatures?=?HaarVec;
double?*pInterData?=?IntgData;
int????FeatureType;
POINT??FeatureStPos?FeatureScale;
long?feaCount?=?0;
FeatureStPos.y?=?1;
while?(FeatureStPos.y? {
FeatureStPos.x?=?1;
while?(FeatureStPos.x? {
//======?計算A類特征?======
FeatureScale.y?=?2;
FeatureType?=?0;
while?(FeatureStPos.y?+?FeatureScale.y? {
FeatureScale.x?=?2;?
while?(FeatureStPos.x?+?2?*?FeatureScale.x? {
pFeatures[feaCount]?=?GetOneFeatureValue(FeatureType?FeatureStPos?FeatureScalepInterData);
feaCount++;
FeatureScale.x?++;
}
FeatureScale.y?++;
}
//=========?計算B類特征?==========
FeatureScale.y?=?2;
FeatureType?=?1;
while?(FeatureStPos.y?+?2?*?FeatureScale.y? {
FeatureScale.x
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????13178??2015-07-24?15:06??HaarFeature.cpp
?????文件???????1871??2015-11-04?17:56??HaarFeature.h
?????文件??????15817??2015-07-29?10:42??HOG.cpp
?????文件???????3348??2015-11-04?17:55??HOG.h
?????文件??????29715??2015-07-21?14:34??LBP.CPP
?????文件???????4025??2015-11-04?17:56??LBP.H
?????文件???????9439??2015-07-22?10:11??MomentFeature.cpp
?????文件???????2731??2015-11-04?17:55??MomentFeature.h
-----------?---------??----------?-----??----
????????????????80124????????????????????8
評論
共有 條評論