人脸识别C 程序代码 - 副本概要
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CvCapture * m_Video; // opencv 库的指针,从视频获取图像
int nFrmNum=0; //定义第 nFrmNum 帧,初始化为 0,自动增值,nFrmNum 是帧控件的关 联变量,帧控件的 ID 为 IDC_FRAMNUM
////定义几个重要的全局变量 int nTrainFaces =0; // 训练图像的数目,即人脸库中有 n 张人脸 int nEigens =0; // 自己取的主要特征值数目(在提取特征脸的时候用到的参数)
CAppDesignDlg::CAppDesignDlg(CWnd* pParent /*=NULL*/) : CDialog(CAppDesignDlg::IDD, pParent)
{ //{{AFX_DATA_INIT(CAppDesignDlg) // NOTE: the ClassWizard 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;
#define MAX_POINT 200
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif
///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About using namespace std;
// DDX/DDV support
// Implementation protected:
//{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() };
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) {
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP
END_MESSAGE_MAP()
///////////////////////////////////////////////////////////////////////////// // CAppDesignDlg dialog
/*以下是自定义函数的声明,具体定义会在下方,cv 开头的是 OPENCV 自带的库函数*/ void learn(); int loadFaceImgArr(char *filename); void recognize2(IplImage *img); void doPCA(); void storeTrainingData(); int loadTrainingData(CvMat** pTrainPersonNumMat); int findNearestNeighbor(float* projectedtestFace);
//{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT }
void CAboutDlg::DoDataExchange(CDataExchange* pDX) {
CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP }
// ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); //}}AFX_VIRTUAL
//用字符串时一定要把 using namespace std;写在前面,否则不能用,下面是用于显示的字符串
CvHaarClassifierCascade* cascade=NULL;
//OPENcv 的分类器文件进行人脸检测,此函数是一个匹配函数,根据不同的分类 器(tree、stump)进行不同的匹配,返回整形值,具体参考 http://baike.so.com/doc/6988305.html 或 http://www.docin.com/p-192656933.html,是人脸检测中用到的一个很重要 的函数
// AppDesignDlg.cpp : implementation file //
#include "stdafx.h" #include "AppDesign.h" #include "AppDesignDlg.h" #include <string> #include <math.h> #include "Select.h" #include "CvvImage.h"
IplImage** faceImgArr =0; // 指向训练人脸和测试人脸的指针(在学习和识别阶段指向不 同) CvMat* personNumTruthMat=0; // 人脸图像的 ID 号 IplImage* pAvgTrainImg =0; // 训练人脸数据的平均值 IplImage** eigenVectArr =0; // 投影矩阵,也即主特征向量 CvMat* eigenValMat =0; // 特征值 CvMat* projectedTrainFaceMat=0; // 训练图像的投影 CvMat* trainPersonNumMat=0;
/*以下是 MFC 框架代码,在我们用鼠标进行搭建框架的时候自动生成*/ class CAboutDlg : public Cdialog { public:
CAboutDlg();
// DΒιβλιοθήκη Baidualog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA
int nFrmNum=0; //定义第 nFrmNum 帧,初始化为 0,自动增值,nFrmNum 是帧控件的关 联变量,帧控件的 ID 为 IDC_FRAMNUM
////定义几个重要的全局变量 int nTrainFaces =0; // 训练图像的数目,即人脸库中有 n 张人脸 int nEigens =0; // 自己取的主要特征值数目(在提取特征脸的时候用到的参数)
CAppDesignDlg::CAppDesignDlg(CWnd* pParent /*=NULL*/) : CDialog(CAppDesignDlg::IDD, pParent)
{ //{{AFX_DATA_INIT(CAppDesignDlg) // NOTE: the ClassWizard 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;
#define MAX_POINT 200
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif
///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About using namespace std;
// DDX/DDV support
// Implementation protected:
//{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() };
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) {
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP
END_MESSAGE_MAP()
///////////////////////////////////////////////////////////////////////////// // CAppDesignDlg dialog
/*以下是自定义函数的声明,具体定义会在下方,cv 开头的是 OPENCV 自带的库函数*/ void learn(); int loadFaceImgArr(char *filename); void recognize2(IplImage *img); void doPCA(); void storeTrainingData(); int loadTrainingData(CvMat** pTrainPersonNumMat); int findNearestNeighbor(float* projectedtestFace);
//{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT }
void CAboutDlg::DoDataExchange(CDataExchange* pDX) {
CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP }
// ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); //}}AFX_VIRTUAL
//用字符串时一定要把 using namespace std;写在前面,否则不能用,下面是用于显示的字符串
CvHaarClassifierCascade* cascade=NULL;
//OPENcv 的分类器文件进行人脸检测,此函数是一个匹配函数,根据不同的分类 器(tree、stump)进行不同的匹配,返回整形值,具体参考 http://baike.so.com/doc/6988305.html 或 http://www.docin.com/p-192656933.html,是人脸检测中用到的一个很重要 的函数
// AppDesignDlg.cpp : implementation file //
#include "stdafx.h" #include "AppDesign.h" #include "AppDesignDlg.h" #include <string> #include <math.h> #include "Select.h" #include "CvvImage.h"
IplImage** faceImgArr =0; // 指向训练人脸和测试人脸的指针(在学习和识别阶段指向不 同) CvMat* personNumTruthMat=0; // 人脸图像的 ID 号 IplImage* pAvgTrainImg =0; // 训练人脸数据的平均值 IplImage** eigenVectArr =0; // 投影矩阵,也即主特征向量 CvMat* eigenValMat =0; // 特征值 CvMat* projectedTrainFaceMat=0; // 训练图像的投影 CvMat* trainPersonNumMat=0;
/*以下是 MFC 框架代码,在我们用鼠标进行搭建框架的时候自动生成*/ class CAboutDlg : public Cdialog { public:
CAboutDlg();
// DΒιβλιοθήκη Baidualog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA