📄 11.txt
字号:
#include <cv.h>
#include <cvaux.h>
#include <highgui.h>
#include<cxcore.h>
#include <iostream>
#include "ImageStruct.h"
#include <math.h>
#include <fstream>
using namespace std;
const int DETECT_WIDTH=64;
const int DETECT_HEIGHT=128;
const double PI=3.1415;
int main()
{
//crete window to show
cvNamedWindow("win",CV_WINDOW_AUTOSIZE);
//load the map
IplImage *imgOrg=0;
imgOrg=cvLoadImage("E:\\HOG\\picture\\3.jpg",0);
if(!imgOrg)
cout<<"could not load image file "<<endl;
//show the map
cvShowImage("win",imgOrg);
cvWaitKey(100);
// output the data of original map to the file
ofstream original_mapmax("original_mapmax.txt");
BwImage imgIF(imgOrg);//constuct a original object
if(!original_mapmax)
cerr << "Oops! Unable to save original_mapmax data!"<<endl;
else
{
for(int i=0;i!=imgOrg->height;++i)
{
for(int j=0;j!=imgOrg->width;++j)
original_mapmax<<(int)imgIF[i][j]<<" ";
original_mapmax<<endl;
}
}
// caculate the horizonal gradient of map;
int GradhMax[DETECT_HEIGHT][DETECT_WIDTH]={0};
for(int hi=0;hi!=DETECT_HEIGHT;++hi)
{
for(int hj=1;hj!=DETECT_WIDTH-1;++hj)
{
GradhMax[hi][hj]=imgIF[hi][hj+1]-imgIF[hi][hj-1];
}
}
for (hi=0;hi!=DETECT_HEIGHT;++hi)
{
GradhMax[hi][0]=0;
GradhMax[hi][DETECT_WIDTH-1]=0;
}
ofstream gradhMaxOutFile("GradhMax.txt");
if(!gradhMaxOutFile)
cerr << "Oops! Unable to save GradhMax data!"<<endl;
else
{
for(int i=0;i!=DETECT_HEIGHT;++i)
{
for(int j=0;j!=DETECT_WIDTH;++j)
gradhMaxOutFile<<GradhMax[i][j]<<" ";
gradhMaxOutFile<<endl;
}
}
// caculate the vertical gradient of map;
int GradvMax[DETECT_HEIGHT][DETECT_WIDTH]={0};
for(int vi=1;vi!=DETECT_HEIGHT-1;++vi)
{
for(int vj=0;vj!=DETECT_WIDTH;++vj)
{
GradvMax[vi][vj]=imgIF[vi+1][vj]-imgIF[vi-1][vj];
}
}
for (int vj=0;vj!=DETECT_WIDTH;++vj)
{
GradvMax[0][vj]=0;
GradvMax[DETECT_HEIGHT-1][vj]=0;
}
ofstream gradvMaxOutFile("GradvMax.txt");
if(!gradvMaxOutFile)
cerr << "Oops! Unable to save GradhMax data!"<<endl;
else
{
for(int i=0;i!=DETECT_HEIGHT;++i)
{
for(int j=0;j!=DETECT_WIDTH;++j)
gradvMaxOutFile<<GradvMax[i][j]<<" ";
gradvMaxOutFile<<endl;
}
}
//cacuclate the magnitude and gradient orient of the map
float GradMagMax[DETECT_HEIGHT][DETECT_WIDTH]={0.0};
int GradOrientMax[DETECT_HEIGHT][DETECT_WIDTH]={0};
for(int mag_i=0;mag_i!=DETECT_HEIGHT;++mag_i)
{
for(int mag_j=0;mag_j!=DETECT_WIDTH;++mag_j)
{
GradMagMax[mag_i][mag_j]=sqrt(GradhMax[mag_i][mag_j]*GradhMax[mag_i][mag_j]+GradvMax[mag_i][mag_j]*GradvMax[mag_i][mag_j]);
//cacuclate the gradient orient
if(GradMagMax[mag_i][mag_j]==0)
GradOrientMax[mag_i][mag_j]=0;
else
GradOrientMax[mag_i][mag_j]=asin((float)GradhMax[mag_i][mag_j]/GradMagMax[mag_i][mag_j])*180/PI;
if(GradOrientMax[mag_i][mag_j]<0)
GradOrientMax[mag_i][mag_j]+=180;
GradOrientMax[mag_i][mag_j]/=20;
GradOrientMax[mag_i][mag_j]+=1;
}
}
ofstream gradMagMaxOutFile("GradMagMax.txt");
ofstream gradOrientMaxOutFile("GradOrientMax.txt");
if(!gradMagMaxOutFile )
cerr << "Oops! Unable to save GradMagMax data!"<<endl;
else
{
for(int i=0;i!=DETECT_HEIGHT;++i)
{
for(int j=0;j!=DETECT_WIDTH;++j)
gradMagMaxOutFile<<GradMagMax[i][j]<<" ";
gradMagMaxOutFile<<endl;
}
}
if(! gradOrientMaxOutFile)
cerr <<"Oops! Unable to save GradOrientMax data!"<<endl;
else
for(int i=0;i!=DETECT_HEIGHT;++i)
{
for(int j=0;j!=DETECT_WIDTH;++j)
gradOrientMaxOutFile<<GradOrientMax[i][j]<<" ";
gradOrientMaxOutFile<<endl;
}
float integralMagMax[DETECT_HEIGHT][DETECT_WIDTH]={0.0};
int integralBin1Max[DETECT_HEIGHT][DETECT_WIDTH]={0};
int integralBin2Max[DETECT_HEIGHT][DETECT_WIDTH]={0};
int integralBin3Max[DETECT_HEIGHT][DETECT_WIDTH]={0};
int integralBin4Max[DETECT_HEIGHT][DETECT_WIDTH]={0};
int integralBin5Max[DETECT_HEIGHT][DETECT_WIDTH]={0};
int integralBin6Max[DETECT_HEIGHT][DETECT_WIDTH]={0};
int integralBin7Max[DETECT_HEIGHT][DETECT_WIDTH]={0};
int integralBin8Max[DETECT_HEIGHT][DETECT_WIDTH]={0};
int integralBin9Max[DETECT_HEIGHT][DETECT_WIDTH]={0};
//destroy the window
cvDestroyWindow("win");
// cvRelease()
// system("pause");
return 0;
}
//for the size model,length:width=2:1 and 1:2,we choose 24*12 pixels
//16*32 £?24*48£?32?á64 and reverse
/* int heightStep[8]={6,8,12,16,3,4,6,8};//height stride
int widthStep[8]={3,4,6,8,6,8,12,16}; //width stride
for(int t=0;t!=8;++t)
{
for(int iL=0;iL!=(DETECT_HEIGHT/heightStep[t]-1);++iL)
{
for(int iW=0;iW!=(DETECT_WIDTH/widthStep[t]-1);++iW)
{
pos1.x=iL*heightStep[t],pos1.y=iW*widthStep[t];
pos2.x=iL*heightStep[t],pos2.y=iW*widthStep[t]+2*widthStep[t]-1;
pos3.x=iL*heightStep[t],pos3.y=iW*widthStep[t]+4*widthStep[t]-1;
pos4.x=iL*heightStep[t]+2*heightStep[t]-1,pos4.y=iW*widthStep[t];
pos5.x=iL*heightStep[t]+2*heightStep[t]-1,pos5.y=iW*widthStep[t]+2*widthStep[t]-1;
pos6.x=iL*heightStep[t]+2*heightStep[t]-1,pos6.y=iW*widthStep[t]+4*widthStep[t]-1;
pos7.x=iL*heightStep[t]+4*heightStep[t]-1,pos7.y=iW*widthStep[t];
pos8.x=iL*heightStep[t]+4*heightStep[t]-1,pos8.y=iW*widthStep[t]+2*widthStep[t]-1;
pos9.x=iL*heightStep[t]+4*heightStep[t]-1,pos9.y=iW*widthStep[t]+4*widthStep[t]-1;
//caculate the histogram of gradient oriented the cell1
cell1_bin1Mag=integralBin1Max[pos5.x][pos5.y]+integralBin1Max[pos1.x][pos1.y]-integralBin1Max[pos2.x][pos2.y]-integralBin1Max[pos4.x][pos4.y];
cell1_bin2Mag=integralBin2Max[pos5.x][pos5.y]+integralBin2Max[pos1.x][pos1.y]-integralBin2Max[pos2.x][pos2.y]-integralBin2Max[pos4.x][pos4.y];
cell1_bin3Mag=integralBin3Max[pos5.x][pos5.y]+integralBin3Max[pos1.x][pos1.y]-integralBin3Max[pos2.x][pos2.y]-integralBin3Max[pos4.x][pos4.y];
cell1_bin4Mag=integralBin4Max[pos5.x][pos5.y]+integralBin4Max[pos1.x][pos1.y]-integralBin4Max[pos2.x][pos2.y]-integralBin4Max[pos4.x][pos4.y];
cell1_bin5Mag=integralBin5Max[pos5.x][pos5.y]+integralBin5Max[pos1.x][pos1.y]-integralBin5Max[pos2.x][pos2.y]-integralBin5Max[pos4.x][pos4.y];
cell1_bin6Mag=integralBin6Max[pos5.x][pos5.y]+integralBin6Max[pos1.x][pos1.y]-integralBin6Max[pos2.x][pos2.y]-integralBin6Max[pos4.x][pos4.y];
cell1_bin7Mag=integralBin7Max[pos5.x][pos5.y]+integralBin7Max[pos1.x][pos1.y]-integralBin7Max[pos2.x][pos2.y]-integralBin7Max[pos4.x][pos4.y];
cell1_bin8Mag=integralBin8Max[pos5.x][pos5.y]+integralBin8Max[pos1.x][pos1.y]-integralBin8Max[pos2.x][pos2.y]-integralBin8Max[pos4.x][pos4.y];
cell1_bin9Mag=integralBin9Max[pos5.x][pos5.y]+integralBin9Max[pos1.x][pos1.y]-integralBin9Max[pos2.x][pos2.y]-integralBin9Max[pos4.x][pos4.y];
binvec.push_back((cell1_bin1Mag+U)/(sumMagBlock+U));
binvec.push_back((cell1_bin2Mag+U)/(sumMagBlock+U));
binvec.push_back((cell1_bin3Mag+U)/(sumMagBlock+U));
binvec.push_back((cell1_bin4Mag+U)/(sumMagBlock+U));
binvec.push_back((cell1_bin5Mag+U)/(sumMagBlock+U));
binvec.push_back((cell1_bin6Mag+U)/(sumMagBlock+U));
binvec.push_back((cell1_bin7Mag+U)/(sumMagBlock+U));
binvec.push_back((cell1_bin8Mag+U)/(sumMagBlock+U));
binvec.push_back((cell1_bin9Mag+U)/(sumMagBlock+U));
//caculate the histogram of gradient oriented the cell2
cell2_bin1Mag=integralBin1Max[pos6.x][pos6.y]+integralBin1Max[pos2.x][pos2.y]-integralBin1Max[pos3.x][pos3.y]-integralBin1Max[pos5.x][pos5.y];
cell2_bin2Mag=integralBin2Max[pos6.x][pos6.y]+integralBin2Max[pos2.x][pos2.y]-integralBin2Max[pos3.x][pos3.y]-integralBin2Max[pos5.x][pos5.y];
cell2_bin3Mag=integralBin3Max[pos6.x][pos6.y]+integralBin3Max[pos2.x][pos2.y]-integralBin3Max[pos3.x][pos3.y]-integralBin3Max[pos5.x][pos5.y];
cell2_bin4Mag=integralBin4Max[pos6.x][pos6.y]+integralBin4Max[pos2.x][pos2.y]-integralBin4Max[pos3.x][pos3.y]-integralBin4Max[pos5.x][pos5.y];
cell2_bin5Mag=integralBin5Max[pos6.x][pos6.y]+integralBin5Max[pos2.x][pos2.y]-integralBin5Max[pos3.x][pos3.y]-integralBin5Max[pos5.x][pos5.y];
cell2_bin6Mag=integralBin6Max[pos6.x][pos6.y]+integralBin6Max[pos2.x][pos2.y]-integralBin6Max[pos3.x][pos3.y]-integralBin6Max[pos5.x][pos5.y];
cell2_bin7Mag=integralBin7Max[pos6.x][pos6.y]+integralBin7Max[pos2.x][pos2.y]-integralBin7Max[pos3.x][pos3.y]-integralBin7Max[pos5.x][pos5.y];
cell2_bin8Mag=integralBin8Max[pos6.x][pos6.y]+integralBin8Max[pos2.x][pos2.y]-integralBin8Max[pos3.x][pos3.y]-integralBin8Max[pos5.x][pos5.y];
cell2_bin9Mag=integralBin9Max[pos6.x][pos6.y]+integralBin9Max[pos2.x][pos2.y]-integralBin9Max[pos3.x][pos3.y]-integralBin9Max[pos5.x][pos5.y];
binvec.push_back((cell2_bin1Mag+U)/(sumMagBlock+U));
binvec.push_back((cell2_bin2Mag+U)/(sumMagBlock+U));
binvec.push_back((cell2_bin3Mag+U)/(sumMagBlock+U));
binvec.push_back((cell2_bin4Mag+U)/(sumMagBlock+U));
binvec.push_back((cell2_bin5Mag+U)/(sumMagBlock+U));
binvec.push_back((cell2_bin6Mag+U)/(sumMagBlock+U));
binvec.push_back((cell2_bin7Mag+U)/(sumMagBlock+U));
binvec.push_back((cell2_bin8Mag+U)/(sumMagBlock+U));
binvec.push_back((cell2_bin9Mag+U)/(sumMagBlock+U));
//caculate the histogram of gradient oriented the cell3
cell3_bin1Mag=integralBin1Max[pos8.x][pos8.y]+integralBin1Max[pos4.x][pos4.y]-integralBin1Max[pos5.x][pos5.y]-integralBin1Max[pos7.x][pos7.y];
cell3_bin2Mag=integralBin2Max[pos8.x][pos8.y]+integralBin2Max[pos4.x][pos4.y]-integralBin2Max[pos5.x][pos5.y]-integralBin2Max[pos7.x][pos7.y];
cell3_bin3Mag=integralBin3Max[pos8.x][pos8.y]+integralBin3Max[pos4.x][pos4.y]-integralBin3Max[pos5.x][pos5.y]-integralBin3Max[pos7.x][pos7.y];
cell3_bin4Mag=integralBin4Max[pos8.x][pos8.y]+integralBin4Max[pos4.x][pos4.y]-integralBin4Max[pos5.x][pos5.y]-integralBin4Max[pos7.x][pos7.y];
cell3_bin5Mag=integralBin5Max[pos8.x][pos8.y]+integralBin5Max[pos4.x][pos4.y]-integralBin5Max[pos5.x][pos5.y]-integralBin5Max[pos7.x][pos7.y];
cell3_bin6Mag=integralBin6Max[pos8.x][pos8.y]+integralBin6Max[pos4.x][pos4.y]-integralBin6Max[pos5.x][pos5.y]-integralBin6Max[pos7.x][pos7.y];
cell3_bin7Mag=integralBin7Max[pos8.x][pos8.y]+integralBin7Max[pos4.x][pos4.y]-integralBin7Max[pos5.x][pos5.y]-integralBin7Max[pos7.x][pos7.y];
cell3_bin8Mag=integralBin8Max[pos8.x][pos8.y]+integralBin8Max[pos4.x][pos4.y]-integralBin8Max[pos5.x][pos5.y]-integralBin8Max[pos7.x][pos7.y];
cell3_bin9Mag=integralBin9Max[pos8.x][pos8.y]+integralBin9Max[pos4.x][pos4.y]-integralBin9Max[pos5.x][pos5.y]-integralBin9Max[pos7.x][pos7.y];
binvec.push_back((cell3_bin1Mag+U)/(sumMagBlock+U));
binvec.push_back((cell3_bin2Mag+U)/(sumMagBlock+U));
binvec.push_back((cell3_bin3Mag+U)/(sumMagBlock+U));
binvec.push_back((cell3_bin4Mag+U)/(sumMagBlock+U));
binvec.push_back((cell3_bin5Mag+U)/(sumMagBlock+U));
binvec.push_back((cell3_bin6Mag+U)/(sumMagBlock+U));
binvec.push_back((cell3_bin7Mag+U)/(sumMagBlock+U));
binvec.push_back((cell3_bin8Mag+U)/(sumMagBlock+U));
binvec.push_back((cell3_bin9Mag+U)/(sumMagBlock+U));
//caculate the histogram of gradient oriented the cell4
cell4_bin1Mag=integralBin1Max[pos9.x][pos9.y]+integralBin1Max[pos5.x][pos5.y]-integralBin1Max[pos6.x][pos6.y]-integralBin1Max[pos8.x][pos8.y];
cell4_bin2Mag=integralBin2Max[pos9.x][pos9.y]+integralBin2Max[pos5.x][pos5.y]-integralBin2Max[pos6.x][pos6.y]-integralBin2Max[pos8.x][pos8.y];
cell4_bin3Mag=integralBin3Max[pos9.x][pos9.y]+integralBin3Max[pos5.x][pos5.y]-integralBin3Max[pos6.x][pos6.y]-integralBin3Max[pos8.x][pos8.y];
cell4_bin4Mag=integralBin4Max[pos9.x][pos9.y]+integralBin4Max[pos5.x][pos5.y]-integralBin4Max[pos6.x][pos6.y]-integralBin4Max[pos8.x][pos8.y];
cell4_bin5Mag=integralBin5Max[pos9.x][pos9.y]+integralBin5Max[pos5.x][pos5.y]-integralBin5Max[pos6.x][pos6.y]-integralBin5Max[pos8.x][pos8.y];
cell4_bin6Mag=integralBin6Max[pos9.x][pos9.y]+integralBin6Max[pos5.x][pos5.y]-integralBin6Max[pos6.x][pos6.y]-integralBin6Max[pos8.x][pos8.y];
cell4_bin7Mag=integralBin7Max[pos9.x][pos9.y]+integralBin7Max[pos5.x][pos5.y]-integralBin7Max[pos6.x][pos6.y]-integralBin7Max[pos8.x][pos8.y];
cell4_bin8Mag=integralBin8Max[pos9.x][pos9.y]+integralBin8Max[pos5.x][pos5.y]-integralBin8Max[pos6.x][pos6.y]-integralBin8Max[pos8.x][pos8.y];
cell4_bin9Mag=integralBin9Max[pos9.x][pos9.y]+integralBin9Max[pos5.x][pos5.y]-integralBin9Max[pos6.x][pos6.y]-integralBin9Max[pos8.x][pos8.y];
binvec.push_back((cell4_bin1Mag+U)/(sumMagBlock+U));
binvec.push_back((cell4_bin2Mag+U)/(sumMagBlock+U));
binvec.push_back((cell4_bin3Mag+U)/(sumMagBlock+U));
binvec.push_back((cell4_bin4Mag+U)/(sumMagBlock+U));
binvec.push_back((cell4_bin5Mag+U)/(sumMagBlock+U));
binvec.push_back((cell4_bin6Mag+U)/(sumMagBlock+U));
binvec.push_back((cell4_bin7Mag+U)/(sumMagBlock+U));
binvec.push_back((cell4_bin8Mag+U)/(sumMagBlock+U));
binvec.push_back((cell4_bin9Mag+U)/(sumMagBlock+U));
BlockFeature.push_back(binvec);
binvec.clear();
}
}
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -