1、人脸识别C 程序代码 副本概要/ AppDesignDlg.cpp : implementation file/#include stdafx.h#include AppDesign.h#include AppDesignDlg.h#include #include #include Select.h#include CvvImage.h#define MAX_POINT 200#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog use
2、d for App Aboutusing namespace std;CvCapture * m_Video; / opencv库的指针,从视频获取图像int nFrmNum=0; /定义第nFrmNum帧,初始化为0,自动增值,nFrmNum是帧控件的关联变量,帧控件的ID为IDC_FRAMNUM/定义几个重要的全局变量int nTrainFaces =0; /训练图像的数目,即人脸库中有n张人脸int nEigens =0; /自己取的主要特征值数目(在提取特征脸的时候用到的参数)IplImage* faceImgArr =0; /指向训练人脸和测试人脸的指针(在学习和识别阶段指向不同)C
3、vMat* personNumTruthMat=0; /人脸图像的ID号IplImage* pAvgTrainImg =0; /训练人脸数据的平均值IplImage* eigenVectArr =0; /投影矩阵,也即主特征向量CvMat* eigenValMat =0; /特征值CvMat* projectedTrainFaceMat=0; /训练图像的投影CvMat* trainPersonNumMat=0;/*以下是自定义函数的声明,具体定义会在下方,cv开头的是OPENCV自带的库函数*/void learn(); int loadFaceImgArr(char *filename);
4、void recognize2(IplImage *img);void doPCA();void storeTrainingData();int loadTrainingData(CvMat* pTrainPersonNumMat);int findNearestNeighbor(float* projectedtestFace);/用字符串时一定要把using namespace std;写在前面,否则不能用,下面是用于显示的字符串CvHaarClassifierCascade* cascade=NULL; /OPENcv的分类器文件进行人脸检测,此函数是一个匹配函数,根据不同的分类器(tr
5、ee、stump)进行不同的匹配,返回整形值,具体参考/*以下是MFC框架代码,在我们用鼠标进行搭建框架的时候自动生成*/class CAboutDlg : public Cdialogpublic: CAboutDlg();/ Dialog Data /AFX_DATA(CAboutDlg) enum IDD = IDD_ABOUTBOX ; /AFX_DATA / ClassWizard generated virtual function overrides /AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CD
6、ataExchange* pDX); / DDX/DDV support /AFX_VIRTUAL/ Implementationprotected: /AFX_MSG(CAboutDlg) /AFX_MSG DECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD) /AFX_DATA_INIT(CAboutDlg) /AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DA
7、TA_MAP(CAboutDlg) /AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog) /AFX_MSG_MAP(CAboutDlg) / No message handlers /AFX_MSG_MAPEND_MESSAGE_MAP()/ CAppDesignDlg dialogCAppDesignDlg:CAppDesignDlg(CWnd* pParent /*=NULL*/) : CDialog(CAppDesignDlg:IDD, pParent) /AFX_DATA_INIT(CAppDesignDlg) / NOTE: the C
8、lassWizard will add member initialization here /AFX_DATA_INIT / Note that LoadIcon does not require a subsequent DestroyIcon in Win32 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;void CAppDesignD
9、lg: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
10、() 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()/ CAppDesignDlg m
11、essage handlersBOOL CAppDesignDlg:OnInitDialog() CDialog:OnInitDialog(); / Add About. menu item to system menu. / IDM_ABOUTBOX must be in the system command range. ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR); pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX
12、, strAboutMenu); / Set the icon for this dialog. The framework does this automatically / when the applications main window is not a dialog SetIcon(m_hIcon, TRUE); / Set big icon SetIcon(m_hIcon, FALSE); / Set small icon / TODO: Add extra initialization here return TRUE; / return TRUE unless you set
13、the focus to a controlvoid CAppDesignDlg:OnSysCommand(UINT nID, LPARAM lParam) if (nID & 0xFFF0) = IDM_ABOUTBOX) CAboutDlg dlgAbout; dlgAbout.DoModal(); else CDialog:OnSysCommand(nID, lParam); / If you add a minimize button to your dialog, you will need the code below/ to draw the icon. For MFC applications using the document/view model,/ this is automatically d
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1