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

📄 facedetectview.cpp

📁 人脸识别因其在安全验证系统、信用卡验证、医学、档案管理、视频会 议、人机交互、系统公安(罪犯识别等)等方面的巨大应用前景而越来越成为 当前模式识别和人工智能领域的一个研究热点。
💻 CPP
📖 第 1 页 / 共 5 页
字号:
            ((v_top-v_bottom)/2+L_beye+Cofg_lefteyey-Cofg_mouthy-B_MouthMiddleLine)+
            (H_rMouth+Cofg_mouthx-H_lreye-Cofg_righteyex)*(H_rMouth+Cofg_mouthx-H_lreye-Cofg_righteyex);
     Toweye_mouth=	(T_line-R_line-L_line)/(-2.0*sqrt(R_line)*sqrt(L_line));
	
/////////////////////////////////////////////////////////两个眼睛中心距与脸宽的比例/////
        Toweye_face=double(X)/(v_left-v_right);
///////////////////////////////////////与两眼重心和斜线所形成的角///////////////////////


}

///////////////////////////获取整个脸部特征/////////////////////////////////////
void CFaceDetectView::GetPartParameter()
{
  Zx=0.0;
  Zy=0.0;
  
  M10=GetM(1,0);
  M00=GetM(0,0);
  M01=GetM(0,1);
  Zx=M10/M00;
  Zy=M01/M00;
  
  
  M1=Getm(2,0)+Getm(0,2);
  
  M2=(Getm(2,0)-Getm(0,2))*(Getm(2,0)-Getm(0,2))+4*(Getm(1,1)*Getm(1,1));
  
  M3=(Getm(3,0)-Getm(1,2))*(Getm(3,0)-Getm(1,2))+(3*Getm(2,1)+Getm(0,3))*(3*Getm(2,1)+Getm(0,3));
  
  M4=(Getm(3,0)+Getm(1,2))*(Getm(3,0)+Getm(1,2))+(Getm(2,1)+Getm(0,3))*(Getm(2,1)+Getm(0,3));
  
  M5=(Getm(3,0)-3*Getm(1,2))*(Getm(3,0)+Getm(1,2))*((Getm(3,0)+Getm(1,2))*(Getm(3,0)+Getm(1,2))-3*(Getm(2,1)+Getm(0,3))*(Getm(2,1)+Getm(0,3)))+
     (3*Getm(2,1)-Getm(0,3))*(Getm(2,1)+Getm(0,3))*(3*(Getm(3,0)+Getm(1,2))*(Getm(3,0)+Getm(1,2))-(Getm(2,1)+Getm(0,3))*(Getm(2,1)+Getm(0,3)));
  
  M6=(Getm(2,0)-Getm(0,2))*((Getm(3,0)+Getm(1,2))*(Getm(3,0)+Getm(1,2))-(Getm(2,1)+Getm(0,3))*(Getm(2,1)+Getm(0,3)))+4*Getm(1,1)*(Getm(3,0)+Getm(1,2))*(Getm(2,1)+Getm(0,3));
 
  M7=(3*Getm(1,2)-Getm(3,0))*(Getm(3,0)+Getm(1,2))*((Getm(3,0)+Getm(1,2))*(Getm(3,0)+Getm(1,2))-3*(Getm(2,1)+Getm(0,3))*(Getm(2,1)+Getm(0,3)))+
      (3*Getm(2,1)-Getm(0,3))*(Getm(2,1)+Getm(0,3))*(2*(Getm(0,3)+Getm(1,2))*(Getm(0,3)+Getm(1,2)));

  Eleye=(Getmleye(2,0)+Getmleye(0,2)+sqrt((Getmleye(2,0)+Getmleye(0,2))*(Getmleye(2,0)+Getmleye(0,2))-4*Getmleye(0,2)*Getmleye(2,0)+4*Getmleye(1,1)*Getmleye(1,1)))/
	  (Getmleye(2,0)+Getmleye(0,2)-sqrt((Getmleye(2,0)+Getmleye(0,2))*(Getmleye(2,0)+Getmleye(0,2))-4*Getmleye(0,2)*Getmleye(2,0)+4*Getmleye(1,1)*Getmleye(1,1)));

  Ereye=(Getmreye(2,0)+Getmreye(0,2)+sqrt((Getmreye(2,0)+Getmreye(0,2))*(Getmreye(2,0)+Getmreye(0,2))-4*Getmreye(0,2)*Getmreye(2,0)+4*Getmreye(1,1)*Getmreye(1,1)))/
	  (Getmreye(2,0)+Getmreye(0,2)-sqrt((Getmreye(2,0)+Getmreye(0,2))*(Getmreye(2,0)+Getmreye(0,2))-4*Getmreye(0,2)*Getmreye(2,0)+4*Getmreye(1,1)*Getmreye(1,1)));

}

double CFaceDetectView::GetM(int n,int m)
{
	double GetCM=0;

	for(int i=0;i<v_top-v_bottom;i++)
		for(int j=0;j<v_right-v_left;j++)
		{  
          double Getx=0.0;
		  Getx=pow(i,n);
          double Gety=0.0;
		  Gety=pow(j,m);
		  int fij;
		  if(WhiteBlack[i][j]==0)
			  fij=1;
		  else 
			  fij=0;
          GetCM=GetCM+fij*Getx*Gety;
		}
return GetCM;
}

double CFaceDetectView::Getm(int n,int m)
{
	double GetCm=0;
	int flat=0;
   	for(int i=0;i<v_top-v_bottom;i++)
		for(int j=0;j<v_right-v_left;j++)
		{  
          double Getx=0.0;
		  Getx=pow(i-Zx,-n);
          double Gety=0.0;
		  Gety=pow(j-Zy,-m);
		  int fij;
		  if(WhiteBlack[i][j]==0)
			  fij=1;
		  else 
			  fij=0;
		  GetCm=GetCm+fij*Getx*Gety;
		}
	double m00=1.0;
	if((n+m)>1&&flat==0)
	{
         m00=pow(Getm(0,0),double (m+n)/2);
		 flat=1;
	}
     GetCm=GetCm/m00;
		return GetCm;
}

double CFaceDetectView::Getmleye(int n,int m)
{
 double GetCmleye=0;
   	for(int i=(v_top-v_bottom)/2+L_beye,y=1;i<=(v_top-v_bottom)/2+L_teye;i++,y++)
		for(int j=H_lreye,x=1;j<=H_lleye;j++,x++)
		{  
          double Getx=0.0;
		  Getx=pow(i-Zx,-n);
          double Gety=0.0;
		  Gety=pow(j-Zy,-m);
		  int fij;
		  if(WhiteBlack[i][j]==0)
			  fij=1;
		  else 
			  fij=0;
		  GetCmleye=GetCmleye+fij*Getx*Gety;
		}
	return GetCmleye;

}

double CFaceDetectView::Getmreye(int n,int m)
{
   double GetCmreye=0;
   	for(int i=(v_top-v_bottom)/2+R_beye,y=1;i<(v_top-v_bottom)/2+R_teye;i++,y++)  
		for(int j=H_rreye,x=1;j<=H_rleye;j++,x++)
		{  
          double Getx=0.0;
		  Getx=pow(i-Zx,-n);
          double Gety=0.0;
		  Gety=pow(j-Zy,-m);
		  int fij;
		  if(WhiteBlack[i][j]==0)
			  fij=1;
		  else 
			  fij=0;
		  GetCmreye=GetCmreye+fij*Getx*Gety;
		}
      return GetCmreye;
}


void CFaceDetectView::OnPROSSINGdetect() 
{
	// TODO: Add your command handler code here
    	UpdateData(TRUE);
	     CString SQLstr;
		 double temp=0.0;
		 int Count=100;
///////////////////////////////////////////////////////////////////
    SQLstr = "SELECT username,X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,Picture,Sex,Age,Birthday,Teleph,Address FROM CParameter";
		
    theApp.ADOExecute(theApp.m_pADOSet,SQLstr);
	 Count=theApp.m_pADOSet->GetRecordCount();
	  CFaceDetectDoc *doc=new CFaceDetectDoc();
	 CString name="liminyue2";
	 int nResponse=0;
     if(Count==0)
	 {
	  message *dlgname=new message(); 
     int GN=dlgname->DoModal();
	  /////弹出对话框插入///////////
       if(GN==IDOK)
	   {
	     name=dlgname->m_Name;
	     ////插入
	     ADDFace(name);

	   }
	 }
/*	 CFaceDetectApp *App1;//=new CFaceDetectApp();
	 
     if(Count==0&&Study==0)
	 {  
       nResponse =App1->study();
   if (nResponse == 1)
   {   
	     MessageName dlgname;
           GetName=App1->Message();
	   if(GetName==1)
          name=dlgname.m_username;
	   else
		   return ;
	   CString s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11;
	   s1.Format("%d",x1);
	   s2.Format("%d",x2);
	   s3.Format("%d",x3);
	   s4.Format("%d",x4);
	   s5.Format("%d",x5);
	   s6.Format("%d",x6);
	   s7.Format("%d",x7);
	   s8.Format("%d",x8);
	   s9.Format("%d",x9);
	   s10.Format("%d",x10);
	   s11.Format("%d",x11);
	   CString path=doc->path;
	   name="li";
	   SQLstr ="insert into CParameter (username,X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,Picture) values('"+name+","+s1+","+s2+","+s3+","+s4+","+s5+","+s6+","+s7+","+s8+","+s9+","+s10+","+s11+","+path+"')";
       theApp.ADOExecute(theApp.m_pADOSet,SQLstr);
	   	UpdateData(TRUE);
		::AfxMessageBox("请确认图片中是否有人脸!");
   }
   else if (nResponse == 0)
   {
      return ;
   }
	 }
*/
_variant_t sName;
_variant_t sE;
_variant_t aG;
_variant_t bI;
_variant_t tE;
_variant_t aD;
_variant_t pI;
_variant_t Y1;
_variant_t Y2;
_variant_t Y3;
_variant_t Y4;
_variant_t Y5;
_variant_t Y6;
_variant_t Y7;
_variant_t Y8;
_variant_t Y9;
_variant_t Y10;
_variant_t Y11;
if(Count>0)
{
	   
	     theApp.m_pADOSet->MoveFirst();
      _variant_t UnameY=theApp.m_pADOSet->GetCollect("username");
	       sName=UnameY;
      Y1=theApp.m_pADOSet->GetCollect("X1");
      Y2=theApp.m_pADOSet->GetCollect("X2");
      Y3=theApp.m_pADOSet->GetCollect("X3");
      Y4=theApp.m_pADOSet->GetCollect("X4");
      Y5=theApp.m_pADOSet->GetCollect("X5");
      Y6=theApp.m_pADOSet->GetCollect("X6");
      Y7=theApp.m_pADOSet->GetCollect("X7");
      Y8=theApp.m_pADOSet->GetCollect("X8");
      Y9=theApp.m_pADOSet->GetCollect("X9");
      Y10=theApp.m_pADOSet->GetCollect("X10");
	  Y11=theApp.m_pADOSet->GetCollect("X11");	
	               pI=theApp.m_pADOSet->GetCollect("Picture");
	              sE=theApp.m_pADOSet->GetCollect("Sex");
				  aG=theApp.m_pADOSet->GetCollect("Age");
				  bI=theApp.m_pADOSet->GetCollect("Birthday");
				  tE=theApp.m_pADOSet->GetCollect("Teleph");
				  aD=theApp.m_pADOSet->GetCollect("Address");
	     
				  theApp.m_pADOSet->MoveNext();
  
  for(int i=0;i<Count-1;i=i+1)
  {
	  
	  
      _variant_t UnameZ=theApp.m_pADOSet->GetCollect("username");
      _variant_t Z1=theApp.m_pADOSet->GetCollect("X1");
      _variant_t Z2=theApp.m_pADOSet->GetCollect("X2");
      _variant_t Z3=theApp.m_pADOSet->GetCollect("X3");
      _variant_t Z4=theApp.m_pADOSet->GetCollect("X4");
      _variant_t Z5=theApp.m_pADOSet->GetCollect("X5");
      _variant_t Z6=theApp.m_pADOSet->GetCollect("X6");
      _variant_t Z7=theApp.m_pADOSet->GetCollect("X7");
      _variant_t Z8=theApp.m_pADOSet->GetCollect("X8");
      _variant_t Z9=theApp.m_pADOSet->GetCollect("X9");
      _variant_t Z10=theApp.m_pADOSet->GetCollect("X10");
	  _variant_t Z11=theApp.m_pADOSet->GetCollect("X11");
                  
	  
	  int sum1=0;
	  int sum2=0;

	  if(fabs(double(Y1)-x1)>fabs(double(Z1)-x1))
          sum2++;
	  else
		  sum1++;

	  if(fabs(double(Y2)-x2)>fabs(double(Z2)-x2))
          sum2++;
	  else
		  sum1++;
	  
	  if(fabs(double(Y3)-x3)>fabs(double(Z3)-x3))
          sum2++;
	  else
		  sum1++;

	  if(fabs(double(Y4)-x4)>fabs(double(Z4)-x4))
          sum2++;
	  else
		  sum1++;

	  if(fabs(double(Y5)-x5)>fabs(double(Z5)-x5))
          sum2++;
	  else
		  sum1++;

	  if(fabs(double(Y6)-x6)>fabs(double(Z6)-x6))
          sum2++;
	  else
		  sum1++;

	  if(fabs(double(Y7)-x7)>fabs(double(Z7)-x7))
          sum2++;
	  else
		  sum1++;
	  
	  if(fabs(double(Y8)-x8)>fabs(double(Z8)-x8))
          sum2++;
	  else
		  sum1++;

	  if(fabs(double(Y9)-x9)>fabs(double(Z9)-x9))
          sum2++;
	  else
		  sum1++;

	  if(fabs(double(Y10)-x10)>fabs(double(Z10)-x10))
          sum2++;
	  else
		  sum1++;

	  if(fabs(double(Y11)-x11)>fabs(double(Z11)-x11))
          sum2++;
	  else
		  sum1++;

	  if(sum1<sum2)
	  {   sE=theApp.m_pADOSet->GetCollect("Sex");
		  sE=theApp.m_pADOSet->GetCollect("Sex");
		  aG=theApp.m_pADOSet->GetCollect("Age");
		  bI=theApp.m_pADOSet->GetCollect("Birthday");
		  tE=theApp.m_pADOSet->GetCollect("Teleph");
		  aD=theApp.m_pADOSet->GetCollect("Address");
		  pI=theApp.m_pADOSet->GetCollect("Picture");
		  UnameY=UnameZ;
		  sName=UnameY;
		  Y1=Z1;
		  Y2=Z2;
          Y2=Z2;
          Y3=Z3;
          Y4=Z4;
          Y5=Z5;
          Y6=Z6;
          Y7=Z7;
          Y8=Z8;
          Y9=Z9;
          Y10=Z10;
          Y11=Z11;
	  }
	theApp.m_pADOSet->MoveNext();
  }

}

double Dsum;

      CString a1=(char* )(_bstr_t)Y1;
	  double b1=atof(a1);
	  CString a2=(char* )(_bstr_t)x1;
	  double b2=atof(a2);
      double Dsum1=fabs(b1-b2);

	   a1=(char* )(_bstr_t)Y2;
	   b1=atof(a1);
	   a2=(char* )(_bstr_t)x2;
	   b2=atof(a2);
      double Dsum2=fabs(b1-b2);
   
	   a1=(char* )(_bstr_t)Y3;
	   b1=atof(a1);
	   a2=(char* )(_bstr_t)x3;
	   b2=atof(a2);
      double Dsum3=fabs(b1-b2);

       a1=(char* )(_bstr_t)Y4;
	   b1=atof(a1);
	   a2=(char* )(_bstr_t)x4;
	   b2=atof(a2);
      double Dsum4=fabs(b1-b2);

	  a1=(char* )(_bstr_t)Y5;
	   b1=atof(a1);
	   a2=(char* )(_bstr_t)x5;
	   b2=atof(a1);
      double Dsum5=fabs(b1-b2);

      a1=(char* )(_bstr_t)Y6;
	   b1=atof(a1);
	   a2=(char* )(_bstr_t)x6;
	   b2=atof(a2);
      double Dsum6=fabs(b1-b2);

      a1=(char* )(_bstr_t)Y7;
	   b1=atof(a1);
	   a2=(char* )(_bstr_t)x7;
	   b2=atof(a2);
      double Dsum7=fabs(b1-b2);

       a1=(char* )(_bstr_t)Y8;
	   b1=atof(a1);
	   a2=(char* )(_bstr_t)x8;
	   b2=atof(a2);
      double Dsum8=fabs(b1-b2);

	  a1=(char* )(_bstr_t)Y9;
	   b1=atof(a1);
	   a2=(char* )(_bstr_t)x9;
	   b2=atof(a2);
      double Dsum9=fabs(b1-b2);

	  a1=(char* )(_bstr_t)Y10;
	   b1=atof(a1);
	   a2=(char* )(_bstr_t)x10;
	   b2=atof(a2);
      double Dsum10=fabs(b1-b2);

	  a1=(char* )(_bstr_t)Y11;
	   b1=atof(a1);
	   a2=(char* )(_bstr_t)x11;
	   b2=atof(a2);
      double Dsum11=fabs(b1-b2);

	  
      Dsum=Dsum1+Dsum2+Dsum3+Dsum4+Dsum5+Dsum6+Dsum7+Dsum8+Dsum9+Dsum10+Dsum11;
     shujuyanchi *yanchi=new shujuyanchi();
	 // yanchi->DoModal();
	 
    for(int i=0;i<15000;i++)
	{
		for(int j=0;j<50000;j++)
		{
			;
		}
	}
	  yanchi->DestroyWindow();
        CFaceDetectDoc * InsertPicture=new CFaceDetectDoc();
        CString strTemp=(char* )(_bstr_t)pI;
        InsertPicture->OnOpenDocument1(strTemp);
        ShowPMessage *SPM=new ShowPMessage();
          SPM->m_Name=(char* )(_bstr_t)sName;//MessageBox("OK!");
          SPM->m_Sex=(char* )(_bstr_t)sE;
          SPM->m_Age=(char* )(_bstr_t)aG;
		  SPM->m_Birthday=(char* )(_bstr_t)bI;
		  SPM->m_Teleph=(char* )(_bstr_t)tE;
		  SPM->m_Address=(char* )(_bstr_t)aD;
		  SPM->DoModal();
		   //MessageBox("OK!");

             

  //CString m_name="100";
 //SQLstr = "DELETE FROM CParameter WHERE (username)=('"+m_name+"')";
 //theApp.ADOExecute(theApp.m_pADOSet,SQLstr);
  //name ="100";
 //SQLstr = "UPDATE CParameter SET username=('"+name+"') WHERE (username)=('"+m_name+"')";
 // theApp.ADOExecute(theApp.m_pADOSet,SQLstr);
/*	////////////////////////////////////////////////////////////////////
	for(i=0;i<Count;i++)
	{
     SQLstr = "SELECT Name,EtoEAngle,EtoEThreshold, EtoNtoEAngle,EtoNtoEThreshold FROM CParameterusers ";
    theApp.ADOExecute(theApp.m_pADOSet,SQLstr);
	_variant_t Cunt=theApp.m_pADOSet->GetCollect("old");

	 theApp.m_pADOSet->MpveNext();
	}
//////////////////////////////////////////////////
	if(flag)
	{
		//	SQLstr = "insert into users (username) values('"+m_name+"')";
	}
    */

}
///////////////////////////////////平均值的标准偏差///////////////////////////////
double CFaceDetectView::AverageDeviation(double NewData,double OldData)
{   double Sx;
	Sx=sqrt(((NewData-OldData)*(NewData-OldData))/2);
	return Sx;
}
//////////////////////////////////// 画十字////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
void  CFaceDetectView::DrawCrossX(int X,int Y)
{
	LPBYTE lpData;
	lpData = gDib.FindDIBBits(hDIB);
	WORD gwBytesPerLine = gDib.BytePerLine(hDIB);
	int lOffset;

for(int j=X-4;j<X+4;j++)
{
	lOffset = gDib.PixelOffset(Y, j, gwBytesPerLine);
					*(lpData + lOffset) = 0;
			        *(lpData + lOffset+1) = 0;
			        *(lpData + lOffset+2) =255 ;
}

for(int i=Y-4;i<Y+4;i++)
{
	lOffset = gDib.PixelOffset(i, X, gwBytesPerLine);
					*(lpData + lOffset) = 0;
			        *(lpData + lOffset+1) = 255;
			        *(lpData + lOffset+2) =0 ;
}
Invalidate();

}

BOOL CFaceDetectView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWO

⌨️ 快捷键说明

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