人脸识别C程序代码副本概要.docx
《人脸识别C程序代码副本概要.docx》由会员分享,可在线阅读,更多相关《人脸识别C程序代码副本概要.docx(23页珍藏版)》请在冰豆网上搜索。
![人脸识别C程序代码副本概要.docx](https://file1.bdocx.com/fileroot1/2022-10/9/360e8404-112a-4d58-9c3b-0d9a24c2d543/360e8404-112a-4d58-9c3b-0d9a24c2d5431.gif)
人脸识别C程序代码副本概要
//AppDesignDlg.cpp:
implementationfile
//
#include"stdafx.h"
#include"AppDesign.h"
#include"AppDesignDlg.h"
#include
#include
#include"Select.h"
#include"CvvImage.h"
#defineMAX_POINT200
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CAboutDlgdialogusedforAppAbout
usingnamespacestd;
CvCapture*m_Video;//opencv库的指针,从视频获取图像
intnFrmNum=0;//定义第nFrmNum帧,初始化为0,自动增值,nFrmNum是帧控件的关联变量,帧控件的ID为IDC_FRAMNUM
////定义几个重要的全局变量
intnTrainFaces=0;// 训练图像的数目,即人脸库中有n张人脸
intnEigens=0;// 自己取的主要特征值数目(在提取特征脸的时候用到的参数)
IplImage**faceImgArr=0;// 指向训练人脸和测试人脸的指针(在学习和识别阶段指向不同)
CvMat*personNumTruthMat=0;// 人脸图像的ID号
IplImage*pAvgTrainImg=0;// 训练人脸数据的平均值
IplImage**eigenVectArr=0;// 投影矩阵,也即主特征向量
CvMat*eigenValMat=0;// 特征值
CvMat*projectedTrainFaceMat=0;// 训练图像的投影
CvMat*trainPersonNumMat=0;
/*以下是自定义函数的声明,具体定义会在下方,cv开头的是OPENCV自带的库函数*/
voidlearn();
intloadFaceImgArr(char*filename);
voidrecognize2(IplImage*img);
voiddoPCA();
voidstoreTrainingData();
intloadTrainingData(CvMat**pTrainPersonNumMat);
intfindNearestNeighbor(float*projectedtestFace);
//用字符串时一定要把usingnamespacestd;写在前面,否则不能用,下面是用于显示的字符串
CvHaarClassifierCascade*cascade=NULL;
//OPENcv的分类器文件进行人脸检测,此函数是一个匹配函数,根据不同的分类器(tree、stump)进行不同的匹配,返回整形值,具体参考
/*以下是MFC框架代码,在我们用鼠标进行搭建框架的时候自动生成*/
classCAboutDlg:
publicCdialog
{
public:
CAboutDlg();
//DialogData
//{{AFX_DATA(CAboutDlg)
enum{IDD=IDD_ABOUTBOX};
//}}AFX_DATA
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport
//}}AFX_VIRTUAL
//Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg:
:
CAboutDlg():
CDialog(CAboutDlg:
:
IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
voidCAboutDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
//Nomessagehandlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CAppDesignDlgdialog
CAppDesignDlg:
:
CAppDesignDlg(CWnd*pParent/*=NULL*/)
:
CDialog(CAppDesignDlg:
:
IDD,pParent)
{
//{{AFX_DATA_INIT(CAppDesignDlg)
//NOTE:
theClassWizardwilladdmemberinitializationhere
//}}AFX_DATA_INIT
//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32
m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
pCapture=NULL;
m_totalfrm=0;
m_curfrm=0;
m_stop=false;
loadxml=false;
m_src=NULL;
m_times=0;
}
voidCAppDesignDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAppDesignDlg)
//DDX_Control(pDX,IDC_PROGRESS1,m_progress);
//}}AFX_DATA_MAP
DDX_Control(pDX,IDC_PROGRESS1,m_progress);
}
BEGIN_MESSAGE_MAP(CAppDesignDlg,CDialog)
//{{AFX_MSG_MAP(CAppDesignDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1,OnOpenFile)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTON5,OnStop)
ON_WM_CTLCOLOR()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON2,&CAppDesignDlg:
:
OnBnClickedButton2)
ON_BN_CLICKED(IDC_BUTTON3,&CAppDesignDlg:
:
OnBnClickedButton3)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CAppDesignDlgmessagehandlers
BOOLCAppDesignDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//Add"About..."menuitemtosystemmenu.
//IDM_ABOUTBOXmustbeinthesystemcommandrange.
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
CStringstrAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
//Settheiconforthisdialog.Theframeworkdoesthisautomatically
//whentheapplication'smainwindowisnotadialog
SetIcon(m_hIcon,TRUE);//Setbigicon
SetIcon(m_hIcon,FALSE);//Setsmallicon
//TODO:
Addextrainitializationhere
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
voidCAppDesignDlg:
:
OnSysCommand(UINTnID,LPARAMlParam)
{
if((nID&0xFFF0)==IDM_ABOUTBOX)
{
CAboutDlgdlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog:
:
OnSysCommand(nID,lParam);
}
}
//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow
//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,
//thisisautomaticallyd