⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 11.txt

📁 基于hog人体识别的很好的文章
💻 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 + -