人脸确认系统demo开发笔录

原创 2006年05月22日 20:31:00

1、获取当前程序执行目录

CString getModulePath(void)
{
 char curPath[100];
 GetModuleFileName(NULL,curPath,100); 
 char   drive[100];  
 char   dir[100];  
 char   fname[100];  
 char   ext[100];     
    _splitpath(curPath,drive,dir,fname,ext);  
    CString   strDir;  
    strDir   +=   drive;  
    strDir   +=   dir;
 return strDir;
}

2、使用picture control加载图像

使用cximage的load()函数加载图像:

CxImage image;
  image.Load(filename, CXIMAGE_FORMAT_BMP);
  HBITMAP m_bitmap = image.MakeBitmap(m_picture_input.GetDC()->m_hDC);
  if (m_bitmap == NULL )
   AfxMessageBox(filename);
  m_picture_input.SetBitmap(m_bitmap);

在开始的时候,上面的代码一直不能成功,原因在需要把m_picture_input对应的picture control的type属性设为bitmap。

3、CEdit控件的数据控制DDX_TEXT

即使定义了函数

void CRegisterView::DoDataExchange(CDataExchange* pDX)
{
 CFormView::DoDataExchange(pDX);
 DDX_Text(pDX, IDC_TESTID, register_input);
}

在CEdit控件中输入数字后,调用register_input的值时,仍为空。解决办法:在读取register_input值时先调用UpdateData(true);而在写入register_input值时,后调用UpdateData(false);

4、单文档多视图解决方案

4、1在class CFaceIndentificationApp生成各个视图类

class CFaceIndentificationApp : public CWinApp
{
private:
 void create_different_views(void);  //初始化生成各个视图
public:
 CRegisterView * m_pRegisterView;
 CCheckInitView *m_pCheckInitView;
 CMainView* m_pMainView;
 CView* SwitchView(int view_id); // 选择函数
};

4、2在BOOL CFaceIndentificationApp::InitInstance()函数中加入代码段

if (!ProcessShellCommand(cmdInfo))
  return FALSE;
 create_different_views();  //生成各个视图
 SwitchView(3);   //初始化主页面
 // 唯一的一个窗口已初始化,因此显示它并对其进行更新
 m_pMainWnd->ShowWindow(SW_SHOW);
 m_pMainWnd->UpdateWindow();

4、3生成各个视图代码

void CFaceIndentificationApp::create_different_views(void)
{
 CDocument* pCurrentDoc = ((CFrameWnd*)m_pMainWnd)->GetActiveDocument();
 CCreateContext newContext;
 newContext.m_pCurrentDoc =pCurrentDoc;
 m_pRegisterView = new CRegisterView;
 ((CView*)m_pRegisterView)->Create(NULL,"RegisterView",WS_CHILD,CFrameWnd::rectDefault,m_pMainWnd,1,&newContext);
 m_pCheckInitView = new CCheckInitView;
 ((CView*)m_pCheckInitView)->Create(NULL,"CheckInitView",WS_CHILD,CFrameWnd::rectDefault,m_pMainWnd,2,&newContext);
 m_pMainView = new CMainView;
 ((CView*)m_pMainView)->Create(NULL,"MainView",WS_CHILD,CFrameWnd::rectDefault,m_pMainWnd,3,&newContext);
 //当文档模板创建视图的时候,会自动发送WM_INITIALUPDATE消息,
 //因此对于我们自己创建的视图,需要人工发送这条消息
 m_pRegisterView->OnInitialUpdate();
 m_pCheckInitView->OnInitialUpdate();
}

4、4选择视图代码

CView* CFaceIndentificationApp::SwitchView(int view_id)
{
 CView* pActiveView = ((CFrameWnd*)m_pMainWnd)->GetActiveView();
 CView* pNewView;
 switch (view_id) {
 case 1:
  pNewView = m_pRegisterView;
  break;
 case 2:
  pNewView = m_pCheckInitView;
  break;
 case 3:
  pNewView = m_pMainView;
  break;
 default:
  break;
 }
 // 交换视图的窗口ID,使RecalcLayout()可以工作
 UINT temp = ::GetWindowLong(pActiveView->m_hWnd, GWL_ID);
 ::SetWindowLong(pActiveView->m_hWnd, GWL_ID, ::GetWindowLong(pNewView->m_hWnd, GWL_ID));
 ::SetWindowLong(pNewView->m_hWnd, GWL_ID, temp);
 // 显示新的视图,隐藏前一个视图
 pActiveView->ShowWindow(SW_HIDE);
 pNewView->ShowWindow(SW_SHOW);
 ((CFrameWnd*)m_pMainWnd)->SetActiveView(pNewView);
 ((CFrameWnd*)m_pMainWnd)->RecalcLayout();
 //重画
 pNewView->Invalidate();
 return pActiveView;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Kinect人脸识别系统—开发历程

除非比较重要的文章,其他小文章都放在52coding.com上了。此文属于,吐槽文章。 持续维护地址: http://52coding.com/kinect-face-recognition-dev...

手把手教你开发基于深度学习的人脸识别【考勤/签到】系统

人脸识别介绍 平台环境需求 技术点 系统流程 细节设计 人脸检测 人脸关键点定位 人脸特征提取 模型的训练 模型的部署 MySQL数据库的使用 MFC工程的搭建 软件使用人脸识别介绍人脸识别技术是一项...

嵌入式linux学习笔录--根文件系统制作

制作最基本的根文件系统比较简单,对照着国嵌视频一步步来即可,但是如果移植tslib和嵌入式qt到文件系统,就会出现许许多多的问题。由于对shell脚本一窍不通,因此笔者在制作文件系统的时候遇到了很多麻...

Android静态图片人脸识别的完整demo(附完整源码)

本文介绍了android静态识别人脸并进行标记人眼位置及人脸框的完整demo,后续将再次基础上推出camera实时预览环境下人脸检测、人眼标记的demo。

Android 人脸特征点检测(主动形状模型) ASM Demo (Active Shape Model on Android)

目前Android平台上进行人脸特征识别非常火爆,本人研究生期间一直从事人脸特征的处理,所以曾经用过一段ASM(主动形状模型)提取人脸基础特征点,所以这里采用JNI的方式将ASM在Android平台上...

android 结合 opencv项目(NDK、OpenCV、android,官方Demo人脸识别)

第一个android结合 opencv项目(NDK、OpenCV、android人脸识别) 前提条件:已经搭建好jdk 和eclipse 开发android 和插件CDT (eclipse c++)的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)