首页
会员中心
到顶部
到尾部
VC毕业设计

人脸视频检索系统设计说明文档+设计VC++源码

时间:2020/10/13 21:16:08  作者:  来源:  查看:0  评论:0
内容摘要: 一.软件实现的主要界面软件的主要界面如图1.1所示,从程序的主界面可以看出整个系统主要由两大模块构成,包括:人脸的输入和检测模块,以及人脸识别和检索模块。按照组成部分可以将整个系统分成六个部分:包括:1.输入部分,2.检测结果,3.视频操作,4.信息配置,5.输出结果,6...

一.软件实现的主要界面

软件的主要界面如图1.1所示,从程序的主界面可以看出整个系统主要由两大模块构成,包括:人脸的输入和检测模块,以及人脸识别和检索模块。按照组成部分可以将整个系统分成六个部分:包括:1.输入部分,2.检测结果,3.视频操作,4.信息配置,5.输出结果,6.软件简介。

人脸视频检索系统设计说明文档+设计VC++源码

图1.1 人脸检索系统主界面

二.软件的需求概括

软件主要的功能部分:

(1):能够打开读取任何BMP或者JPG图像,并将图像显示到固定空间上。(2):能够在控件上通过鼠标操作实现任意图像大小的剪裁,并实现剪裁后的图片显示。

(3):能够对任意一幅图像进行人脸检测,包括对图像剪裁之后,只对剪裁区域进行人脸检测。

(4):图像的重新加载,任何图像都与可能误操作,此时可以通过重新加载来实现数据恢复到原始的读入时的图像数据,包括实施剪裁的数据的清空。(5):图像信息的显示,主要是指一些简单的图像信息,包括图像的宽度、高度以及位深。

(6):人脸教案车结果的显示,就是将提供带检测的图像中人脸区域找出,并将其显示到指定的控件中,在此系统中并没有将全部检测到的人脸显示出来,不能动态显示(可以作为其缺钱在后面再叙述)。

(7):能够打开Xvid编码格式的avi视频文件,并获得视频文件的相关信息,并且通过制定控件查看,只包括简单的视频长度和宽度以及帧速率。

(8):能够实现简单的视频操作,包括视频在指定的控件上播放,能在暂停和播放模式之间切换.播放时能够显示相应的信息,包括总的视频时间长度,播放的动态时间显示,滑动条显示播放进度。

(9):人脸检索主要是对从视频中抓取的一帧图像进行人脸检测,并对其与检测输入选择的人脸进行识别,识别过程主要是计算所有人脸的欧式距离,默认距离最小值为识别的结果。

(10):可以进行检索之前的信息配置,包括对视频检索步长的选取,以及检索时间段的选取。

(11):显示视频中最像待识别人脸的12个结果,每次显示六个结果,通过“上”“下”按键可以选择循环显示。

(12):能够对检测结果进行跟踪,即找出每个检索结果所在视频帧,以及相对应的时间,可以直接在原视频中查看原始图像。

(13):显示软件的相关介绍。

(14):所有显示图像的窗口都必须实现重绘的功能,就是在窗口最小化或被遮掩之后恢复之后原图的显示不会出现任何问题。

三.软件代码设计过程中需要注意的问题

(1).内存和变量的管理要严格规范,整个程序开发的过程中出现最多的问题就是内存泄漏,出现非法的读写的问题屡见不鲜,如图3.1。大部分原因是对一个变量进行操作的时候没有考虑到检查变量的空与否,特别是指针变量。

人脸视频检索系统设计说明文档+设计VC++源码

图3.1 出现内存读写错误

创建的变量过多,或者创建的变量不需要时没有手动释放,导致系统运行时占用的内存空间越来越庞大。

(2).养成写好注释的习惯,当程序代码越来越长的时候发觉代码对自己越来越陌生,因为之前写的东西可能因为没有注释而导致自己都不知道是实现什么功能的。不光会浪费时间,而且对后来的工作也不利。对于自己容易遗忘或者不易懂的代码要及时加上自己的注释,并且要尽量简单明了。

(3).变量的命名,以前总以为变量名只是一个简单一个代号或者一段空间而已,但是随着程序的复杂,这种理解其实会出现致命的错误。变量名多而杂只会增加自己的工作量,并且相当降低程序的可读性。对于后面工作的继续相当不利。

(4).要注意代码的利弊,算法复杂度是编程的时候必须考虑到的。循环的反复使用绝对会降低程序运行的速率,特别是嵌套的循环。


四.程序到目前为止产生的诸多缺陷

(1).图像的剪裁部分,重绘过程中闪屏的情况明显,如果剪裁的区域超过控件大小会出现内存的错误。因为剪裁的确定是通过鼠标右击实现的,因此每次剪裁之后如果不产生剪裁区域的时候右击也会产生相应的操作,知道程序发生错误结束。在鼠标拖多剪裁区域的时候去过剪裁框出现在区域外,会发生进图形绘制到窗口的情况。对于剪裁的问题较多,希望通过多查阅资料解决相关问题。

(2).输入图像人脸检测的时候显示的始终只有前六个人脸结果,并没有做到“有多少显示多少”的要求。对于大图像时,背景干扰过多的情况下这种错误就很明显。

(3).视频的操作一直是最复杂的部分,特别是连续打开好几个视频文件的时候就会出现内存读写错误甚至检测结果出现错误的情况。

(4).程序不够稳定,运行时所耗用资源相当庞大。

五.程序的详细设计过程

1.输入部分的设计

首先是对话框资源的设计,主要包括玩对话框上添加控件,调整控件大小,布置控件的位置,以及为相应的空间设定ID值和Caption,在这部分主要添加的空间是按钮控件、图像显示控件和组合框控件,它们的ID和类型分别如下表5.1所示:

表5.1 输入部分的控件信息

TAB键顺序

控件

ID

类型

1

输入部分

IDC_INPUT

组合框

2

打开

IDC_OPENIMAGE

按钮

3

人脸检测

IDC_FACEDETECT

按钮

4

重新加载

IDC_RELOAD

按钮

5

图像信息

IDC_IMAGEINFO

按钮

6

图像显示

IDC_IMAGESHOW

图片控件

分别对需要的的控件添加相应的消息响应函数,主要是针对按钮控件。消息响应函数分别如下表5.2所示:

表5.2 输入部分控件的消息响应函数

控件

ID

类型

响应函数

打开

IDC_OPENIMAGE

按钮

OnOpenimage()

人脸检测

IDC_FACEDETECT

按钮

OnFacedetect()

重新加载

IDC_RELOAD

按钮

OnReload()

图像信息

IDC_IMAGEINFO

按钮

OnImageinfo()

其次是为类添加需要的成员变量,变量如下表5.3所示:

public:              表5.3 添加的成员变量

变量及类型

注释

IplImage*  mImg

//保存读入图像的数据,用于后来的人脸检测

IplImage*  ImgData

//保存人脸检测中间过程需要用到的原始数据

IplImage*  ImgReload

//保存重新需要记载的图像数据

消息列表如下所示:

人脸视频检索系统设计说明文档+设计VC++源码
人脸视频检索系统设计说明文档+设计VC++源码
人脸视频检索系统设计说明文档+设计VC++源码

  


相关评论
广告联系QQ:45157718 点击这里给我发消息 电话:13516821613 杭州余杭东港路118号雷恩国际科技创新园  网站技术支持:黄菊华互联网工作室 浙ICP备06056032号