在这篇博文中将完毕《C++开发人脸性别识别》的收尾工作。主要内容分为两部分:加入视频暂定功能、界面规范化。

  一 视频暂停功能

  严格来说这个视频暂定功能算是视频人脸性别识别的一个遗留问题,本应加在C++开发人脸性别识别教程(16)——视频人脸性别识别这篇博文中。这里将其补上,详细功能就是在对摄像头採集的视频进行人脸检測、性别识别时,可以通过一个“暂停”button来对程序进行控制,实现程序的開始和中断。

  1.1 加入控件

  依照以往的思路这里须要再次加入一个button控件来实现这个暂停的功能。只是细心观察发现此时对话框中有一个“下一张”button,似乎对这个button利用的还不够充分。因此这里我们使用一个小技巧。即将视频暂停功能复用在这个“下一张”button上。即当程序工作在单张图片模式下时,这个button的作用是读取并处理下一张图片;当程序工作在视频流模式下时,这个button的作用就是暂停和继续的功能。

  1.2 button显示文本切换控制

  既然让这个button充当多个功能,自然要求其可以显示几种不同的文本信息来提示用户当前可进行的操作。首先我们默认button显示“暂停”字样,可以通过更改该button控件的属性来完毕这个目的:

  接下来须要依据当前的工作模式来更改button所显示的文本,当用户单击“图像目录”button时。button应显示“下一张”,因此须要在“图像目录”button相应的事件处理函数OnBnClickedButtonImagefile()加入button文本控制代码:

SetDlgItemTextA(IDC_BUTTON_NextImage,"下一张");//刷新控件

  同理。当用户单击“打开视频”button时,button应该显示“暂停”文本,因此须要在“打开视频”button相应的事件处理函数OnBnClickedButton1Video()中加入相似的button文本控制代码:

SetDlgItemTextA(IDC_BUTTON_NextImage,"暂停");//刷新控件

  1.3 视频暂停控制

  接下来实现视频暂停功能。双击“暂停”button,进入到其相应的事件触发函数中。发现眼下当中仅仅有一句代码GetNextBigImg()来实现下一张图片的读取工作。

接下来须要对这个函数进行改进,这里先给出该事件触发函数相应的总体代码。稍后进行解释:

void CGenderRecognitionMFCDlg::OnBnClickedButtonNextimage()
{
static int count = 0 ;
if(m_boolModelFlag == FALSE)
{
if(count % 2 == 0)
{
SetDlgItemTextA(IDC_BUTTON_NextImage,"開始");
KillTimer(1);
count = 1;
}
else
{
SetDlgItemTextA(IDC_BUTTON_NextImage,"暂停");
SetTimer(1,10,NULL);
count = 0 ;
}
}
else
{
GetNextBigImg();
}
}

  首先须要推断当前的工作模式。假设是图片模式(m_boolModelFlag为真),则调用GetNextBigImg()函数,实现“下一张”的功能,否则就实现“暂停”和“開始”的功能。通过一个静态变量count来控制“暂停”和“開始”之间的状态转换。至于“暂停”和“開始”功能的实现,则是通过销毁定时器(KillTimer函数)和又一次创建定时器(SetTimer)来完毕。这也是为什么当初在对视频流进行帧处理时要选择定时器触发的原因。OK,此时执行程序,各个功能正常工作。逻辑十分合理。

  二、界面美化

  到眼下为止我们的编程工作已经所有完毕了,接下来就是对界面进行一些美化,调整空间的布局,加入适当的文字说明。首先。为三个编辑框加入静态文本框(Static Text)凝视。来指示编辑框中所显示数据的意义:

  然后加入组框(Group Box)对各个功能区进行解释说明,同一时候加入一个“双击此处转换模式”的静态文本框来提示用户可以通过双击操作来转换图片读取模式,终于效果例如以下:

  哈哈。大功告成。正好三十天。

C++开发人脸性别识别教程(19)——界面美化的更多相关文章

  1. C++开发人脸性别识别教程(12)——加入性别识别功能

    经过之前几篇博客的解说,我们已经成功搭建了MFC应用框架,并实现了主要的图像显示和人脸检測程序,在这篇博文中我们要向当中加入性别识别代码. 关于性别识别,之前已经专门拿出两篇博客的篇幅来进行解说.这里 ...

  2. C++开发人脸性别识别教程(10)——加入图片的人脸检測程序

    现在我们的MFC框架已经初具规模,能够读取并显示目录下的图片.在这篇博文中我们将向当中加入人脸检測的程序. 一.人脸检測算法 这里我们使用OpenCv封装的Adaboost方法来进行人脸检測,參见:C ...

  3. C++开发人脸性别识别教程(3)——OpenCv配置和ImageWatch插件介绍

    OpenCv是C++图像处理的重要工具.这个人脸性别识别的项目就是借助OpenCv进行开发的. 尽管网上已经有了非常多关于OpenCv的配置教程,但出于教程完整性考虑.这里还是用专门的一篇博客来介绍O ...

  4. C++开发人脸性别识别教程(16)——视频人脸性别识别

    在之前的博文中我们已经可以顺利驱动摄像头来採集源图像.在这篇博文中将正式为其加入性别识别的代码,实现摄像头视频的人脸性别识别. 一.人脸检測 在得到摄像头採集的源图像之后,首先要做的就是对其进行人脸检 ...

  5. C++开发人脸性别识别教程(7)——搭建MFC框架之界面绘制

    在之前的博客中我们已经将项目中用到的算法表述完成,包含人脸检測算法以及四种性别识别算法,在这篇博客中我们将着手搭建主要的MFC框架. 一.框架概况 在这篇博文中我们将搭建最主要的MFC框架.绘制MFC ...

  6. C++开发人脸性别识别教程(5)——通过FaceRecognizer类实现性别识别

    在之前的博客中已经攻克了人脸检測的问题,我们计划在这篇博客中介绍人脸识别.性别识别方面的相关实现方法. 事实上性别识别和人脸识别本质上是相似的,由于这里仅仅是一个简单的MFC开发,主要工作并不在算法研 ...

  7. C++开发人脸性别识别教程(9)——搭建MFC框架之显示图片

    在之前的博客中我们已经实现读取用户选定的目录.并将其路径保存在对应的变量中.在这篇博文中我们将介绍怎样借助CvvImage类将图片显示在picture控件中,并自己主动读取目录下的其它图片. 一.加入 ...

  8. C++开发人脸性别识别教程(8)——搭建MFC框架之读取目录信息

    在上一篇博客中我们已经绘制了MFC界面,在这篇博客中我们将加入响应代码,为MFC框架加入一个最主要的功能:打开一个目录. 一.加入相关头文件 这里头文件主要包括三类:opencv头文件.批量读取文件相 ...

  9. C++开发人脸性别识别教程(6)——通过SVM实现性别识别

    http://blog.csdn.net/u013088062/article/details/50480518

随机推荐

  1. Git 和 Redis 的基本认识

    一: Git 二: Redis

  2. 分布式文件管理系统MooseFS在centOS 7中的安装

    首先,MooseFS是做什么的在这边不做具体详述,这边主要记录一下我在自己部署MooseFS中遇到的问题和步骤(大部分参考的其他博客或者资料) 首先是准备资源,MooseFS的最新安装包可以去官网下载 ...

  3. js---html元素操作

    思路:创给节点添加一个元素:步骤: 1:创建元素节点 2:创建文本节点 3:将该文本添加到元素上 4:将该元素追加到其他元素上 appendChild() 方法,将新元素作为父元素的最后一个子元素进行 ...

  4. for 循环练习题(2)

    一张纸的厚度是0.0001米,将纸对折,对折多少次厚度超过珠峰高度8848米 var x=0.0001; for(var a=1;true;a++){ x=x*2; if (x>8848) { ...

  5. 三维重建:SLAM算法的考题总结

    参考英文维基:https://en.wikipedia.org/wiki/Slam 参考文档:视觉slam研究分析的一点认识 1. 请简单描述您对机器人的SLAM的概念理解? 答: 机器人需要在自身位 ...

  6. 【sqli-labs】 less30 GET- Blind -Impidence mismatch -Having a WAF in front of web application (GET型基于盲注的带有WAF注入)

    这次是双引号的,WAF绕过方法不变 http://192.168.136.128/sqli-labs-master/Less-30/login.php?id=1&id=2" and ...

  7. 利用node、express初始化项目

    前端做整站是开发,例如:前端是用了vue创建初始化项目,后端我们不会php.java等,我们只能用node去创建去做后端代码,本文就给大家讲解最基础的从零开始创建一个项目的后端环境. 一般来说前后端代 ...

  8. centos 配置svn http serve

    你看到的这个文章来自于http://www.cnblogs.com/ayanmw 基本的安装包有: subversion /httpd/ svn的httpd的mod_dav_svn mod_authz ...

  9. Socket编程(day14)

    一.基于TCP传输层的编程模型 TCP是面向连接的,安全可靠的. 三次握手 服务器端编程模型 .创建一个用于网络通讯的设备 通讯端点 socket() #include <sys/types.h ...

  10. 06.系统编程-4.多线程和GIL

    为什么有人会说 Python? 多线程是鸡肋?知乎上有人提出这样一个问题,在我们常识中,多进程.多线程都是通过并发的方式充分利用硬件资源提高程序的运行效率,怎么在 Python 中反而成了鸡肋? 有同 ...