基于人脸识别考勤系统的照片采集的研究与实现0_4_第1页
基于人脸识别考勤系统的照片采集的研究与实现0_4_第2页
基于人脸识别考勤系统的照片采集的研究与实现0_4_第3页
基于人脸识别考勤系统的照片采集的研究与实现0_4_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于人脸识别考勤系统的照片采集的研究与实现王卫锋1,2李强3(1华东师范大学计算机科学技术系,上海200062)(2新乡学院计算机系,河南新乡453000)(3太原大学外语师范学院计算机系,山西太原030012)摘要本文主要介绍人脸识别考勤系统中人脸照片的采集和显示过程,开发环境为VISUALC60,以MICROSOFT的VIDEOFORWINDOWSVFW为核心,利用摄像头进行人脸照片的采集并通过接口程序保存到数据库。关键词照片采集;人脸识别;考勤系统;捕捉一写作背景基于人脸识别的考勤系统主要用于对公司员工的出勤统计,员工签到时只需要通过摄像头采集到员工面部信息后,通过人脸识别算法与数据库中预先存入的员工人脸信息的特征值进行比较,识别成功后报出员工的姓名,则考勤成功。本文主要介绍的是考勤机后台管理程序中的人脸信息录入部分的设计,也就是通过摄像头进行员工面部信息的采集,每个员工若干张照片,需要保存到数据库中,同时需要通过一定的算法保存其对应的特征值。限于篇幅,本文就采集一张照片的保存与显示的关键步骤展开阐述,并给出在VISUALC60实现的必要代码。二软件支持VFW(VIDEOFORWINDOWS)是MICROSOFT1992年推出的关于数字视频的一个软件包,它能使应用程序数字化并播放从传统模拟视频源得到的视频剪辑。VFW给程序员提供VBX和AVICAP窗口类的高级编程工具,使程序员能通过发送消息或设置属性来捕获、播放和编辑视频剪辑。现在用户不必专门安装VFW,当用户在安装WINDOWS时,安装程序会自动地安装配置视频所需的组件,如设备驱动程序、视频压缩程序等。VISUALC60在支持VFW方面提供有VFW32LIB、MSACM32LIB、WINMMLIB等类似的库。特别是它提供了功能强大、简单易行、类似于MCIWND的窗口类AVICAP。AVICAP为应用程序提供了一个简单的、基于消息的接口,使之能访问视频和波形音频硬件,并能在将视频流捕获到硬盘上的过程中进行控制。AVICAP支持实时的视频流捕获和单帧捕获并提供对视频源的控制。它能直接访问视频缓冲区,不需要生成中间文件,实时性很强,效率很高。同时,它也可将数字视频捕获并保存到文件。在视频捕获之前需要创建一个捕获窗口,所有的捕获操作及其设置都以它为基础。用AVICAP窗口类创建的窗口被称为“捕获窗口”。捕获窗口功能强大可以进行视频录像将一视频流和音频流捕获到一个AVI文件中或是画面截取。在该系统中主要用到画面截取功能。下面是截取画面时需要用到的几个设置操作1动态地同视频采集设备连接或断开;2以OVERLAY或PREVIEW模式对输入的视频流进行实时显示;A预览(PREVIEW)模式该模式把从捕获硬件传来的数据送入系统内存然后使用图形设备介面GDI将视频帧显示在捕获窗口内。此种模式要占用一定的系统资源,一般的视频采集设备都是通过这种显示方式工作的。B叠加(OVERLAY)模式该模式的视频显示不经过VGA卡,而是将VGA的输出信号与其自身的输出信号合并,形成组合信号显示在计算机的监视器上。在该模式下所捕捉的视频数据的显示不需要占用系统资源,显示效果好。3设置捕获速率;4显示控制视频源、视频格式、视频压缩的对话框;5将捕获的一个单帧图像保存为DIB格式的文件。三实现原理采集照片时,捕获一帧图像在临时文件夹中保存为DIB格式的文件,然后通过文件类的读操作将位图转化为二进制的流数据并保存数据流的长度,再调用数据库接口函数存入数据库,最后删除临时文件夹里的位图文件;显示时调用数据库访问接口函数从数据库取出照片的二进制数据流数据和数据的长度,再通过文件类的写操作在临时文件夹中生成位图文件,显示完后删除该文件。至于把图片显示到界面上,只需把临时文件夹里的位图文件通过绘图函数显示可以了。特征值的算法不在本文讨论之列。四实现流程显示照片照片存在指定员工YN显示背景继续查看YN拍照并预览存入数据库满意否启动摄像头启动成功YNYN指定员工照相完成YN照相过程浏览照片过程五关键程序代码一捕捉照片1在头文件中定义摄像头相关的控制成员变量HWNDM_HWNDCAP/定义视频捕捉窗口CAPDRIVERCAPSM_CAPDRIVERCAPS/捕获驱动器的性能CAPSTATUSM_CAPSTATUS/捕获窗口的当前状态2启动摄像头/创建视频捕捉窗口M_HWNDCAPCAPCREATECAPTUREWINDOW_T“人脸录入“,/捕捉窗口的名字WS_CHILD|WS_VISIBLE,/捕捉窗口的样式CAMERA_LEFT,CAMERA_TOP,/捕捉窗口的左上角的位置坐标CAMERA_WIDTH,CAMERA_HEIGHT,/捕捉窗口的宽度和高度M_HWND,0/捕捉窗口的父窗口(当前窗口)句柄和编号/将捕捉窗与默认摄像头连接,如果连接成功则/获得捕获驱动的性能,放在结构变量M_CAPDRIVERCAPS中IFCAPDRIVERCONNECTM_HWNDCAP,0CAPDRIVERGETCAPSM_HWNDCAP,/如果摄像头支持叠加显示模式则启用叠加显示模式IFM_CAPDRIVERCAPSFHASOVERLAYCAPOVERLAYM_HWNDCAP,TRUEELSECAPPREVIEWRATEM_HWNDCAP,66/设置预览模式的显示速率CAPPREVIEWM_HWNDCAP,TRUE/启用预览模式至此,如果摄像头正常安装了驱动,就能正常工作了。3捕捉并预览照片界面上左边是捕捉窗口,右边留有和捕捉窗口同样大小的区域用于预览或显示捕捉到的照片。CAPGRABFRAMENOSTOPM_HWNDCAP/捕捉照片且捕捉窗口画面不停止CAPFILESAVEDIBM_HWNDCAP,“EMPLOYEEBMP“/保存捕捉到的照片/获得照片句柄用于在界面显示捕捉到的照片M_HPHOTOBMPHBITMAPLOADIMAGEAFXGETINSTANCEHANDLE,/取应用程序实例句柄“EMPLOYEEBMP“,IMAGE_BITMAP,/照片的名称和照片的类型0,0,/指定照片的宽和高,为零则使用由系统定义的图像默认大小LR_CREATEDIBSECTION|LR_LOADFROMFILE/LR_CREATEDIBSECTION当图像类型为IMAGE_BITMAP时,使函数返回一个DIB位图,/而不是一个兼容的位图。LR_LOADFROMFILE根据照片的路径和名称装载图像。INVALIDATEFALSE/重绘窗口显示照片为了在界面显示照片还需添加绘图函数ONPAINT/在界面添加PICTURE控件,命名为IDC_STATIC_PICTURE,并指定图片控件CPAINTDCDCPICTUREGETDLGITEMIDC_STATIC_PICTURECRECTRECTPIC/定义矩形区域/指定显示在图片控件上GETDLGITEMIDC_STATIC_PICTUREGETCLIENTRECTCDCMEMDC/建立与显示设备兼容的内存设备场境MEMDCCREATECOMPATIBLEDCMEMDCSELECTOBJECTM_HPHOTOBMP/将位图选入内存场境/调用缺省的窗口过程来为没有处理的窗口消息提供缺省的处理CWNDDEFWINDOWPROCWM_PAINT,WPARAMMEMDCM_HDC,0DCPICTUREBITBLTRECTPICLEFT,RECTPICTOP,RECTPICWIDTH,RECTPICHEIGHT,/显示位图。前四个参数分别指定显示图片的左上角顶点的位置坐标,和图片的宽高,第五个参数表示源设备场景的地址,第六七两个参数表示显示图片的左上角顶点在源设备环境的矩形区域中的坐标,最后一个参数表示将源矩形图象直接复制到目标矩形上。4保存照片到数据库先把捕捉到的位图文件转化成二进制数据,然后通过接口函数保存到数据库中。对数据库的操作请参考DAO或ADO编程。CFILEBMPFILE/定义文件类变量IFBMPFILEOPEN“EMPLOYEEBMP“,CFILEMODEREAD/读模式打开照片文件LONGNLENGTHBMPFILEGETLENGTH/获得照片的文件长度/申请缓冲区保存二进制照片数据UNSIGNEDCHARPDATANEWUNSIGNEDCHARNLENGTH/如果申请到空间就读数据到缓冲区,即得到二进制数据BMPFILEREADPDATA,NLENGTH/读照片文件到缓冲区BMPFILECLOSE/关闭文件EMPLOYEESAVEPICTUREEMPLOYEEID,/对数据库访问接口BMPFILEREMOVE“EMPLOYEEBMP“/删除临时文件夹里生成的位图文件DELETEPDATA/释放内存中申请的缓冲区5断开摄像头CAPDRIVERDISCONNECTM_HWNDCAP/断开摄像头二显示数据库中的照片前面已经实现照片的预览功能,现在只要从数据库取出照片数据,生成位图文件,取得位图的句柄显示问题就解决了。/通过数据库接口得到照片的文件长度(NLENGTH)和二进制照片数据的地址PDATA。UNSIGNEDCHARPDATANULL/定义字符型指针变量EMPLOYEEGETPICTURE/取照片数据/如果取到则生成位图文件CFILEOUTFILE“EMPLOYEEBMP“,CFILEMODECREATE|CFILEMODEWRITEOUTFILEWRITEHUGELPSTRPDATA,NLENGTHOUTFILECLOSE/取得生成图片的句柄六总结VISUALC提供的AVICAP窗口类为捕获数字视频流及其相关操作提供了很大的方便,极大增强了多媒体程序开发的能力,基本能满足我们的需求。只是由于位图文件本身的特点,程序运行时占用系统内存较多(软件约占9M内存,人脸录入过程软件最多约占19M),考虑到人脸录入模块也只是在系统最初人脸信息录入时使用一次,所以内存问题可以忽略不计。另外在程序设计过程中尤其要注意内存泄露问题,申请的内存空间一定要在用完后释放,否则可能会因为内存耗尽而导致死机。参考文献1四维科技,刘

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论