人脸识别C++程序代码 - 副本

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

// 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_FILE

static char THIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CAboutDlg dialog used for App About

using 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; // 指向训练人脸和测试人脸的指针(在学习和识别阶段指向不同)

CvMat* 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);

void recognize2(IplImage *img);

void doPCA();

void storeTrainingData();

int loadTrainingData(CvMat** pTrainPersonNumMat);

int findNearestNeighbor(float* projectedtestFace);

//用字符串时一定要把using namespace std;写在前面,否则不能用,下面是用于显示的字符串CvHaarClassifierCascade* cascade=NULL;

//OPENcv的分类器文件进行人脸检测,此函数是一个匹配函数,根据不同的分类器(tree、stump)进行不同的匹配,返回整形值,具体参考

/doc/6988305.html或

/p-192656933.html,是人脸检测中用到的一个很重要的函数

/*以下是MFC框架代码,在我们用鼠标进行搭建框架的时候自动生成*/

class CAboutDlg : public Cdialog

{

public:

CAboutDlg();

// Dialog Data

//{{AFX_DATA(CAboutDlg)

enum { IDD = IDD_ABOUTBOX };

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

// No message handlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CAppDesignDlg dialog

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;

m_src = NULL;

m_times =0;

}

void CAppDesignDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAppDesignDlg)

相关文档
最新文档