来源:中国一卡通网 作者:中国一卡通收录 发布时间:2012-01-07 09:36:07 字体:[大 中 小]
摘 要:本文主要介绍人脸识别考勤系统中人脸照片的采集和显示过程 ,开发环境为 Visual C+ + 6.0,以 Mi2 crosoft的 Video for Windows(VFW)为核心 ,利用摄像头进行人脸照片的采集并通过接口程序保存到数据库。
一、写作背景
基于人脸识别的考勤系统主要用于对公司员工的出勤统计,员工签到时需要通过摄像头采集到员工面部照片,再通过人脸识别算法从采集到的照片中取得特征值并与数据库中预先存入的员工人脸照片的特征值进行分析比较,识别成功后报出员工的姓名,则考勤成功。本文主要介绍的是考勤机后台管理程序中的人脸信息录入部分的设计,也就是通过摄像头进行员工面部信息的采集,每个员工采集若干张照片,需要保存到数据库中,同时需要通过一定的算法保存其对应的特征值。本文就对一张照片的采集与显示的关键步骤展开阐述,并给出在Visual C + + 6. 0实现的必要代码。
二、软件支持
VFW(Video for Windows) 是Microsoft 1992 年推出的关于数字视频的一个软件包,它提供了一系列应用程序编程接口,它使应用程序对视频的采集和播放变得非常容易实现。VFW 给程序员提供VBX和AVICap 窗口类的高级编程工具,使程序员能通过发送消息来采集、播放和编辑视频剪辑。现在的计算机用户不必专门安装VFW,当用户在安装Win2dows 时,安装程序会自动地安装配置视频所需的组件,如设备驱动程序、视频压缩程序等。
Visual C + + 6. 0 在支持VFW 方面提供有vfw32. lib、msacm32. lib、winmm. lib 等类似的库,特别是它提供了功能强大、简单易行、类似于MCIWnd 的窗口类AVICap 。AVICap 为应用程序提供了一个简单的、基于消息的接口,使之能访问视频和波形音频硬件,并能在捕获视频流到硬盘上的过中进行控制。AVICap 支持实时的视频流捕获和单帧捕获并提供对视频源的控制。它能直接访问视频缓冲区,不需要生成中间文件,实时性很强,效率很高。同时,它也可捕获数字视频并保存到文件。在捕获视频之前需要创建一个捕获窗口,所有的捕获操作及其设置都以它为基础。用AVICap 窗口类创建的窗口被称为“捕获窗口”。捕获窗口功能强大可以进行视频录像(将一视频流和音频流捕获到一个AVI 文件中) 或是画面截取。在人脸识别考勤系统中主要用到画面截取功能。下面是截取画面时需要用到的几个设置操作:
①动态地同视频采集设备连接或断开;
②以Overlay 或Preview 模式对输入的视频流进行实时显示;
a. 预览(Preview) 模式:该模式把从捕获硬件传来的数据送入系统内存并且在捕获窗口中使用GDI函数来显示这些数据帧。此种模式要占用一定的系统资源,一般的视频采集设备都是通过这种显示方式工作的。
b. 叠加(Overlay) 模式:该模式的视频显示不经过VGA 卡,而是将其输出信号与VGA 的输出信号合并,形成组合信号显示在计算机的监视器上。在该模式下所捕捉的视频数据的显示不需要占用系统资源。
③设置捕获速率;
④显示控制视频源、视频格式、视频压缩的对话框;
⑤将捕获的一个单帧图像保存为DIB 格式的文件。
三、实现原理
采集照片时捕获一帧图像,在临时文件夹中保存为DIB 格式的位图文件,然后通过文件类的读操作将该位图文件转化为二进制的数据同时获取数据的长度,再调用数据库接口函数把转化得到的二进制数据和数据的长度存入数据库,最后删除临时文件夹里的位图文件;显示照片时调用数据库访问接口函数从数据库取出照片的二进制数据和数据的长度,再通过文件类的写操作在临时文件夹中生成位图文件用来显示,显示完后删除该文件。至于把图片显示到界面上,只需把临时文件夹里的位图文件通过绘图函数显示可以了。特征值的算法不在本文讨论之列。
四、实现流程
推荐文章
论坛热帖