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

📄 hogmain.cpp

📁 基于hog人体识别的很好的文章
💻 CPP
📖 第 1 页 / 共 2 页
字号:
       	ofstream  integralBin5outFile("integralbin5Max.txt");
	    if(!integralBin5outFile)
		    cerr << "Oops! Unable to save integralbin5Max data!"<<endl;
    	else
		{
		  for(int i=0;i!=DETECT_HEIGHT;++i)
		{
		  for(int j=0;j!=DETECT_WIDTH;++j)

    	  integralBin5outFile<<integralBin5Max[i][j]<<" ";
	      integralBin5outFile<<endl;  
		 }
		}
		//output bin6 integral
        ofstream  integralBin6outFile("integralbin6Max.txt");
	    if(!integralBin6outFile)
		    cerr << "Oops! Unable to save integralbin6Max data!"<<endl;
    	else
		{
		  for(int i=0;i!=DETECT_HEIGHT;++i)
		{
		  for(int j=0;j!=DETECT_WIDTH;++j)

    	  integralBin6outFile<<integralBin6Max[i][j]<<" ";
	      integralBin6outFile<<endl;  
		 }
		}
		//output bin7 integral
		ofstream  integralBin7outFile("integralbin7Max.txt");
	    if(!integralBin7outFile)
		    cerr << "Oops! Unable to save integralbin7Max data!"<<endl;
    	else
		{
		  for(int i=0;i!=DETECT_HEIGHT;++i)
		{
		  for(int j=0;j!=DETECT_WIDTH;++j)

    	  integralBin7outFile<<integralBin7Max[i][j]<<" ";
	      integralBin7outFile<<endl;  
		 }
		}
		//output bin8 integral
		ofstream  integralBin8outFile("integralbin8Max.txt");
	    if(!integralBin8outFile)
		    cerr << "Oops! Unable to save integralbin8Max data!"<<endl;
    	else
		{
		  for(int i=0;i!=DETECT_HEIGHT;++i)
		{
		  for(int j=0;j!=DETECT_WIDTH;++j)

    	  integralBin8outFile<<integralBin8Max[i][j]<<" ";
	      integralBin8outFile<<endl;  
		 }
		}
		//output bin9 integral
		ofstream  integralBin9outFile("integralbin9Max.txt");
	    if(!integralBin9outFile)
		    cerr << "Oops! Unable to save integralbin9Max data!"<<endl;
    	else
		{
		  for(int i=0;i!=DETECT_HEIGHT;++i)
		{
		  for(int j=0;j!=DETECT_WIDTH;++j)

    	  integralBin9outFile<<integralBin9Max[i][j]<<" ";
	      integralBin9outFile<<endl;  
		 }
		}


		//caculate the blocks and the corresponing normalization result
		//for the size model,width:lenghth=1:l  we choose 12*12 pixels
		// 16*16 pixels,24*24 pixels,32*32pixels,64*64pixles,and the correspoing
		// overlap pixels is the 3,4,6,8,8pixels,and the size model,length:width=2:1 and 1:2,we choose 24*12 pixels 
	   //16*32 ,24*48,32×64  and reverse
       
	   //	caculate the 12*12 pixels,16*16,24*24
	
		/*  1------2-----3
            |      |     |
			|   1  |  2  | ------>cell
			4------5-----6-------------------->block
			|      |     |
			|   3  |  4  |
			7------8-----9
			*/
        Point2D pos1;
		Point2D pos2;
		Point2D pos3;
		Point2D pos4;
		Point2D pos5;
		Point2D pos6;
		Point2D pos7;
		Point2D pos8;
		Point2D pos9;
		float sumMagBlock=0.0;
	    const double U=0.1;     //coefficient
		vector<float> binvec;
		vector<vector<float> > BlockFeature;
		float cell1_bin1Mag=0.0,cell1_bin2Mag=0.0,cell1_bin3Mag=0.0,cell1_bin4Mag=0.0;
		float cell1_bin5Mag=0.0,cell1_bin6Mag=0.0,cell1_bin7Mag=0.0,cell1_bin8Mag=0.0,cell1_bin9Mag=0.0;
        float cell2_bin1Mag=0.0,cell2_bin2Mag=0.0,cell2_bin3Mag=0.0,cell2_bin4Mag=0.0;
		float cell2_bin5Mag=0.0,cell2_bin6Mag=0.0,cell2_bin7Mag=0.0,cell2_bin8Mag=0.0,cell2_bin9Mag=0.0;
		float cell3_bin1Mag=0.0,cell3_bin2Mag=0.0,cell3_bin3Mag=0.0,cell3_bin4Mag=0.0;
		float cell3_bin5Mag=0.0,cell3_bin6Mag=0.0,cell3_bin7Mag=0.0,cell3_bin8Mag=0.0,cell3_bin9Mag=0.0;
		float cell4_bin1Mag=0.0,cell4_bin2Mag=0.0,cell4_bin3Mag=0.0,cell4_bin4Mag=0.0;
		float cell4_bin5Mag=0.0,cell4_bin6Mag=0.0,cell4_bin7Mag=0.0,cell4_bin8Mag=0.0,cell4_bin9Mag=0.0;


	//	int step[5]={3,4,6,8,16}; //each stride
	  int heightStep[13]={3,4,6,8,16,6,8,12,16,3,4,6,8};//height stride
	  int widthStep[13]={3,4,6,8,16,3,4,6,8,6,8,12,16};   //width stride
      int blockersPerHeight=0;
	  int blockersPerWidth=0;
      
        for(int t=0;t!=13;++t)
		{
			blockersPerHeight=(DETECT_HEIGHT-4*heightStep[t])/heightStep[t]+1;
		//	cout<<blockersPerHeight<<endl;
            blockersPerWidth=(DETECT_WIDTH-4*widthStep[t])/widthStep[t]+1;
		//	cout<<blockersPerWidth<<endl;
		for(int iL=0;iL!=blockersPerHeight;++iL)
			{
			  for(int iW=0;iW!=blockersPerWidth;++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;
				
				 /* cout<<pos1.x<<","<<pos1.y<<endl;
				  cout<<pos2.x<<","<<pos2.y<<endl;
				  cout<<pos3.x<<","<<pos3.y<<endl;
				  cout<<pos4.x<<","<<pos4.y<<endl;
				  cout<<pos5.x<<","<<pos5.y<<endl;
				  cout<<pos6.x<<","<<pos6.y<<endl;
				  cout<<pos7.x<<","<<pos7.y<<endl;
				  cout<<pos8.x<<","<<pos8.y<<endl;
				  cout<<pos9.x<<","<<pos9.y<<endl;
				  cout<<endl;*/

				  //caculate the block magnitude
				  sumMagBlock=integralIIMagMax[pos9.x][pos9.y]+integralIIMagMax[pos1.x][pos1.y]-integralIIMagMax[pos3.x][pos3.y]-integralIIMagMax[pos7.x][pos7.y];
				  //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);

				  float sum=0;
				 // cout<<sumMagBlock<<endl;
				  for(int i=0;i!=binvec.size();++i)
					  sum+=binvec[i];
				  cout<<sum<<endl;


				  binvec.clear();
			  }
			}
		}



    //destroy the window
    
	cvDestroyWindow("win");



//	cvRelease()

//	system("pause");

}


void Caculate(int bin,int binarr[][DETECT_WIDTH],float arr[][DETECT_WIDTH],float mag[][DETECT_WIDTH])
{
	float  s[DETECT_HEIGHT][DETECT_WIDTH]={0.0};
	float  temp[DETECT_HEIGHT][DETECT_WIDTH]={0.0};
	for(int j=0;j!=DETECT_WIDTH;++j)
	{
		arr[-1][j]=0;
	}

	   for(int i=0;i!=DETECT_HEIGHT;++i)
	   {
		  for(int j=0;j!=DETECT_WIDTH;++j) 
		 {
			temp[i][j]=mag[i][j];
		  if(bin!=binarr[i][j])
			 temp[i][j]=0;

		  if(j==0)
		  {
			  s[i][j]=temp[i][j];
		  }

		  else
		  s[i][j]=s[i][j-1]+temp[i][j];
          arr[i][j]=arr[i-1][j]+s[i][j];
		  
		 }
	
	   }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -