基于图像处理的疲劳检测系统结题论文_第1页
基于图像处理的疲劳检测系统结题论文_第2页
基于图像处理的疲劳检测系统结题论文_第3页
基于图像处理的疲劳检测系统结题论文_第4页
基于图像处理的疲劳检测系统结题论文_第5页
已阅读5页,还剩42页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

教育部国家大学生创新性实验计划项目类别国家创新基金基于图像处理的疲劳检测系统结题论文项目时间2009年11月2010年11月项目负责人肖永龙承担单位空天科学技术研究院指导老师任玉琢摘要疲劳驾驶是当今交通安全的重要隐患之一。驾驶人在疲劳时,其对周围环境的感知能力、形势判断能力和对车辆的操控能力都有不同程度的下降,因此很容易发生交通事故。因此,研究开发高性能的驾驶人疲劳状态实时监测及预警技术,对改善我国交通安全状况意义重大。本系统旨在准确判断得到驾驶员的疲劳程度,判断PERCLOS值是最具有潜力和最准确的疲劳测定方法之一,其中PERCLOS指在一定的时间内眼睛闭合时所占的时间比例,通过对驾驶室中的驾驶员快速准确的定位其眼部区域,接着得到其眼睛状态,最后计算得到PERCLOS值。根据PERCLOS值的判断标准得到驾驶员的疲劳程度,用以警示驾驶员。关键词司机疲劳;疲劳检测;PERCLOS目录目录第一章引言111选题背景112系统简介1第二章整体321图像获取322人眼面积的显示423参数的显示424状态信息425系统的功能5第三章读取视频模块6第四章图像处理模块741图像识别方法7411肤色识别7412ADABOOST算法8413ADABOOST算法训练9414HAARLIKE生成简单分类器1042训练自己的分类器1043识别人脸模块1244定位人眼模块13第五章参数计算模块1551计算人眼面积模块1552PERCLOS值计算16521PERCLOS的原理或概念16522我们计算PERCLOS的方法17第六章线程管理模块18结束语20参考书目21附录22第一章引言1第一章引言11选题背景疲劳驾车是引发道路交通事故的一个重要因素,从国内历年交通事故统计的大量案例分析中可得出结论因司机疲劳驾驶所造成的道路交通事故约占总数的15至20。而随着交通运输业的不断发展,这一比例可能还会继续上升。交通事故给国家造成巨大的经济损失和人员伤亡,给个人造成难以想象的后果,增加了社会的不安定因素,因而研究预防检测疲劳的方法意义深远而重大。目前疲劳的生理特征的检测方法较多,其中PERCLOS指在一定的时间内眼睛闭合时所占的时间比例。美国联邦公路局曾经检测PERCLOS、头部姿势的变化、脑电图等方法的测试结果与疲劳的关系程度。结果显示PERCLOS与客观疲劳程度的相关系数最大,可以说PERCLOS是最具有潜力和最准确的疲劳测定方法之一。目前,PERCLOS方法已被公认为最有效的、实时的驾驶疲劳检测方法,具有实时、非接触式检测的特性。因此,研制基于PERCLOS和图像处理疲劳检测系统,进行驾驶员疲劳状态的检测,在驾驶员疲劳驾驶时进行报警提醒,对于提高行车安全,降低交通事故发生率具有重要意义。当然,基于图像处理的疲劳检测系统,也可以对工厂工人的疲劳程度进行实时检测,提早发现工人的疲劳状况,这不仅可以为决策者做出决策提供依据,更可以提高工作效率,提高产品质量,还可以更好地保护工人的身体健康,对工厂和工人来说,进行疲劳检测也具有重大意义。12系统简介该疲劳检测系统主要是通过从摄像头中读取图像,然后对所得到的图像进行人脸定位,人眼定位,人眼面积的计算,PERCLOS值的计算以及疲劳判断,进而实现对人疲劳状态的实时检测及报警的功能,满足疲劳检测的基本需求。该疲劳检测系统的主要框架如图11图11第一章引言2包括图像读取,图像处理,参数计算这三个模块,其中在图像处理模块中,主要是对读取到的图像进行人脸定位和人眼定位,在计算参数时,主要是计算人眼的面积,并根据计算出来的人眼面积系列,进行PERCLOS值的计算。在该系统中,每个模块都放在一个线程中运行,线程间的通信采用WINDOWS的消息循环机制,数据通信通过传递指针的方式实现。通过一定的线程管理激活机制,使得系统得以实现对人疲劳状态的实时检测及报警的功能,满足疲劳检测的基本需求。系统开发环境VC2008OPENCV20NETFRAMEWORK该系统的运行环境NETFRAMEWORKWINDOWS系统第二章整体3第二章整体该疲劳检测系统如图21图21主要有视频图像区,参数区,操作区及人眼面积波形显示区组成,当操作者打开程序,单击开始按钮后,程序便自动进行疲劳检测,定位人脸,定位人眼,计算人眼面积,计算PERCLOS值,如果单击打开波形按钮,则会打开人眼面积波形窗口,实时显示当前人眼面积的波形。另外,该系统还提供暂停功能,零时关闭系统中正在运行的线程,以降低程序对系统的消耗。21图像获取图22当程序打开后,单击开始按钮,系统自动从摄像头中读取图像,并实时显示在图像区,直到系统暂停或关闭。第二章整体422人眼面积的显示图23当系统开始工作之后,单击打开波形按钮,系统会另开一个窗口,用于实时显示当前人眼面积的波形,其中横轴为时间轴,纵轴为经过处理的面积轴。图像中每一个波谷都代表着一次眨眼。当单击关闭波形按钮时,系统会关闭该窗口,暂时关闭波形的显示。23参数的显示图24当正常工作时,系统会对人眼的面积进行实时的计算和统计,实时计算PERCLOS值,并在参数区进行显示,系统会取5次PERCLOS值作为一次有效的PERCLOS值,当该PERCLOS值015时,便认为是疲劳状态,并给出相应的提示和警告。24状态信息图25第二章整体5图26图27图28在状态栏中,显示当前检测到的状态信息。当刚开始检测时,状态栏显示灰色,提示信息为正在检测(如图26);如果检测信息正常,则状态中显示为绿色,提示信息为正常(如图27);如果当前人PERCLOS值大于015,则状态中显示为红色,并给出提示,请注意休息(如图28)。25系统的功能图25为方便操作,系统提供了4个基本功能,开始、暂停、结束、和波形显示。其中当系统开启时,仅有开始按钮有效,单击开始按钮后,系统进入工作状态,将其余按钮使能,可进行暂停、波形显示、结束等操作;单击打开波形按钮,系统开启一个波形显示窗口,提供实时人眼面积波形,按钮提示文字变为关闭波形;单击暂停按钮,系统将关闭除主线程外的所有线程,系统进入暂停工作状态。第三章读取视频模块6第三章读取视频模块为了使系统的后续操作能够顺利进行,在初始化时,程序需要对系统是否具有摄像头,有多少个摄像头进行统计,如果没有摄像头,则进行提醒,如果有多个摄像头,便提醒使用者进行选择,以使系统能够正确的进行配置。同时,由于待处理的视频图像数据量巨大,而图像的大小直接关系到待处理的数据量,为此,在对摄像头进行设置时,需要将读入的视频帧的大小为320X240。其设置如下CVCAPTURECAPTURECVCAPTUREFROMCAM0CVSETCAPTUREPROPERTYCAPTURE,CV_CAP_PROP_FRAME_WIDTH,320CVSETCAPTUREPROPERTYCAPTURE,CV_CAP_PROP_FRAME_HEIGHT,240当初始化设置完成后,使用者选择开始时,通过IPLIMAGECVQUERYFRAMECVCAPTURECAPTURE的调用,程序便进行一次视频帧的读取,并通过CVVIMAGEIMGIPLIMAGEIMAGE2IPLIMAGEWPARAMIFIMAGE2IMGCOPYOFIMAGE2/从IPLIMAGE拷贝图像数据到CVVIMAGEIMGDRAWTOHDCHDC,/在控件上绘制图像将图显示在句柄HDC指向的控件上;不断重复读视频帧,显示视频帧,便可以看到一个连续的视频。第四章图像处理模块7第四章图像处理模块图4141图像识别方法411肤色识别肤色是人脸的重要信息,不依赖于面部的细节特征,对于旋转、表情变化等情况都能适用,具有相对的稳定性并且和大多数背景物体的颜色相区别。利用肤色分割检测人脸的方法,聚类紧凑选用YCBCR空间易于实现聚类算法。经分析可知满足二维高斯分布,则对于像素的色度CCBCRT,肤色像素的概率分布如图42第四章图像处理模块8图42对获得的每一帧的图像采用04015,则被测试人已经处于疲劳状态,系统便会进行一些相关处理,如提醒等。第六章线程管理模块18第六章线程管理模块在系统中,读取视频,显示视频模块均采用的是无限循环策略,若是直接放在主线程,则整个应用程序就会出现假死,对所有的系统操作都失效,为此,我们采用了多线程的策略,将读取视频放在了一个新线程中,同时,为了提高系统处理视频的速度,我们为图像处理,人眼面积的记录、PERCLOS值的计算分别开了一个新线程。一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信。这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的,一般线程进行通讯有两种方式1、使用全局变量进行通信,2、使用自定义消息进行通讯。使用全局变量进行通讯,对于传递数据量超大的图像信息不太实用,为此,我们选用了第二种方法,在一个线程的执行函数中向另一个线程发送自定义的消息来达到通信的目的。一个线程向另外一个线程发送消息是通过操作系统实现的。利用WINDOWS操作系统的消息驱动机制,当一个线程发出一条消息时,操作系统首先接收到该消息,然后把该消息转发给目标线程,但是接收消息的线程必须已经建立了消息循环,为此,我们在程序设计时,为每个线程建立一个私有的消息循环WHILEPEEKMESSAGETRANSLATEMESSAGEDISPATCHMESSAGE/通过为每个线程添加消息循环,线程间通信便变得非常简单,仅仅需要PRECORDTHREADPOSTTHREADMESSAGEAWM_USER_NEWPARAMETER,INTPARAM,NULL便可发送向PRECORDTHREAD指针指向的线程发送一个WM_USER_NEWPARAMETER消息,该线程在接收到这个消息后,便进行指定的操作,将参数PARAM写入缓存,完成一次线程间的通讯。当系统中存在多个线程时,就需要对线程进行组织和管理,在该系统中,线程是通过消息来控制的,整个系统的UML时序图如图61第六章线程管理模块19图61然而,由于线程间通讯使用的是指针传递,当消息传递过去之后,便存在多个线程同时访问一个内存空间,造成访问冲突,为了解决这个问题,当线程接收到数据时,便将图像复制一份存入另一个地址中,并对该空间加锁,防止其他线程的干扰,从而使系统能够顺利实现其功能。通过使用消息循环来管理线程,不仅可以使线程变得更为安全,还可以使线程的管理变得更为简单,使系统的可扩展性增强。结束语20结束语基于PERCLOS和图像处理疲劳检测系统,可以实时的得到定位人眼并计算出人眼对面积,得到人的PERCLOS值,判断检测驾驶员的疲劳状态,在驾驶员疲劳驾驶时进行报警提醒,对于提高行车安全,降低交通事故发生率。本系统利用图像处理技术,从定位人脸,定位人眼,计算人眼面积,到计算PERCLOS值,总体用时很少,约200MS,处理速度较快,识别率较高。但是该系统也有一定的不足,图像处理的算法需要进一步优化,系统的线程管理尚需要进一步完善。参考书目21参考书目KAEBLER,学习OPENCV(中文版),清华大学出版社;MATLAB中文论坛,MATLAB神经网络30个案例分析,北京航空航天大学出版社;秦襄培,数字图像处理(第二版),电子工业出版社;张宏林,VISUALC数字图像模式识别技术及工程实践,人民邮电出版社;附录22附录/FATIGUEDETECTIONDLGCPP实现文件INCLUDE“STDAFXH“INCLUDE“FATIGUEDETECTIONH“INCLUDE“FATIGUEDETECTIONDLGH“INCLUDE“WAVEFORMH“IFDEF_DEBUGDEFINENEWDEBUG_NEWENDIF/变量/HDCHDC/设备环境句柄CRECTRECTSTATICCVMEMSTORAGESTORAGE0STATICCVHAARCLASSIFIERCASCADECASCADE0STATICCVHAARCLASSIFIERCASCADECASCADE_20CSTRINGCASCADE_NAME“CSTRINGCASCADE_NAME_2“CVRECTFACECOLOR_ROIBOOLDETECT_FLAGFALSEHWNDHWNDCVCAPTURECAPTURECWINTHREADPREADIMAGETHREADCWINTHREADPDETECTTHREADCWINTHREADPRECORDTHREADWAVEFORMWFINTNAREA2300INTNAREA4300INTPTR0INTNAREA_TEMP0INTCOUNT0DOUBLEDPERCLOS5INTPTRPERCLOS0附录23BOOLISSTOP/变量END/线程函数申明/STATICUINTCREADIMAGELPVOIDLP/线程2读取图像STATICUINTCDETECTLPVOIDLP/线程3识别人脸人眼计算参数STATICUINTCRECORDLPVOIDLP/线程4记录面积和时间系列/线程函数申明END/功能函数/CVRECTFACECOLOR_DETECTIPLIMAGEIMAGEVOIDDETECT_DRAWIPLIMAGEDEST,IPLIMAGEIMAGE,IPLIMAGEIMG_TDOUBLEPERLOGS_VALUEINTPAREA,INTNUM/功能函数END/用于应用程序“关于”菜单项的CABOUTDLG对话框CLASSCABOUTDLGPUBLICCDIALOGPUBLICCABOUTDLG/对话框数据ENUMIDDIDD_ABOUTBOXPROTECTEDVIRTUALVOIDDODATAEXCHANGECDATAEXCHANGEPDX/DDX/DDV支持/实现PROTECTEDDECLARE_MESSAGE_MAPCABOUTDLGCABOUTDLGCDIALOGCABOUTDLGIDDVOIDCABOUTDLGDODATAEXCHANGECDATAEXCHANGEPDXCDIALOGDODATAEXCHANGEPDX附录24BEGIN_MESSAGE_MAPCABOUTDLG,CDIALOGEND_MESSAGE_MAP/CFATIGUEDETECTIONDLG对话框CFATIGUEDETECTIONDLGCFATIGUEDETECTIONDLGCWNDPPARENT/NULL/CDIALOGCFATIGUEDETECTIONDLGIDD,PPARENTM_HICONAFXGETAPPLOADICONIDR_MAINFRAMEVOIDCFATIGUEDETECTIONDLGDODATAEXCHANGECDATAEXCHANGEPDXCDIALOGDODATAEXCHANGEPDXDDX_CONTROLPDX,IDC_SHOWWAVE,BTNSHOWWAVEDDX_CONTROLPDX,IDC_LIST_PARAMETERS,LISTPARAMETERSBEGIN_MESSAGE_MAPCFATIGUEDETECTIONDLG,CDIALOGON_WM_SYSCOMMANDON_WM_PAINTON_WM_TIMERON_WM_QUERYDRAGICON/AFX_MSG_MAPON_BN_CLICKEDIDC_SHOWWAVE,附录25/将“关于”菜单项添加到系统菜单中。/IDM_ABOUTBOX必须在系统命令范围内。ASSERTIDM_ABOUTBOXASSERTIDM_ABOUTBOXAPPENDMENUMF_SEPARATORPSYSMENUAPPENDMENUMF_STRING,IDM_ABOUTBOX,STRABOUTMENU/设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动/执行此操作SETICONM_HICON,TRUE/设置大图标SETICONM_HICON,FALSE/设置小图标/TODO在此添加额外的初始化代码GETDLGITEMIDC_BTNPAUSEENABLEWINDOWFALSEGETDLGITEMIDC_BTNENDENABLEWINDOWFALSEGETDLGITEMIDC_SHOWWAVEENABLEWINDOWFALSEWFNULLCSTRINGSZPATHIFGETMODULEFILENAMENULL,SZPATHGETBUFFERSETLENGTH201,200MESSAGEBOX“LOADDLLERROR“RETURNFALSESZPATHRELEASEBUFFERINTNPOSNPOSSZPATHREVERSEFINDSZPATHSZPATHLEFTNPOSCASCADE_NAMESZPATHGETSTRINGCASCADE_NAMEAPPEND“FACEDLL“CASCADE_NAME_2SZPATHGETSTRINGCASCADE_NAME_2APPEND“EYEDLL“附录26RETURNTRUE/除非将焦点设置到控件,否则返回TRUEVOIDCFATIGUEDETECTIONDLGONSYSCOMMANDUINTNID,LPARAMLPARAMIFNIDDLGABOUTDOMODALELSECDIALOGONSYSCOMMANDNID,LPARAM/如果向对话框添加最小化按钮,则需要下面的代码/来绘制该图标。对于使用文档/视图模型的MFC应用程序,/这将由框架自动完成。VOIDCFATIGUEDETECTIONDLGONPAINTIFISICONICCPAINTDCDCTHIS/用于绘制的设备上下文SENDMESSAGEWM_ICONERASEBKGND,REINTERPRET_CASTDCGETSAFEHDC,0/使图标在工作区矩形中居中INTCXICONGETSYSTEMMETRICSSM_CXICONINTCYICONGETSYSTEMMETRICSSM_CYICONCRECTRECTGETCLIENTRECTINTXRECTWIDTHCXICON1/2INTYRECTHEIGHTCYICON1/2/绘制图标DCDRAWICONX,Y,M_HICONELSECDIALOGONPAINT附录27/当用户拖动最小化窗口时系统调用此函数取得光标/显示。HCURSORCFATIGUEDETECTIONDLGONQUERYDRAGICONRETURNSTATIC_CASTM_HICON/控件响应/VOIDCFATIGUEDETECTIONDLGONBNCLICKEDSHOWWAVE/显示关闭波形IFWF|WF0WFNEWWAVEFORMWFCREATEIDD_WAVEWFSHOWWINDOWTRUECRECTCRTHISGETWINDOWRECTWFMOVECRLEFTCRWIDTH,CRTOP,CRHEIGHTWFBEGINBTNSHOWWAVESETWINDOWTEXTA_T“关闭波形“ELSEWFDESTROYWINDOWWFNULLBTNSHOWWAVESETWINDOWTEXTA_T“显示波形“VOIDCFATIGUEDETECTIONDLGONBNCLICKEDBTNBEGINISSTOPFALSE/开始HDCGETDLGITEMIDC_PICGETDCGETSAFEHDCGETDLGITEMIDC_PICGETCLIENTRECTCAPTURECVCAPTUREFROMCAM0CVSETCAPTUREPROPERTYCAPTURE,CV_CAP_PROP_FRAME_WIDTH,320CVSETCAPTUREPROPERTYCAPTURE,CV_CAP_PROP_FRAME_HEIGHT,240HWNDGETSAFEHWNDSTORAGECVCREATEMEMSTORAGE0附录28PREADIMAGETHREADAFXBEGINTHREADCREADIMAGE,HWNDPDETECTTHREADAFXBEGINTHREADCDETECT,HWNDPRECORDTHREADAFXBEGINTHREADCRECORD,HWNDCASCADECVHAARCLASSIFIERCASCADECVLOADCHARLPTSTRLPCTSTRCASCADE_NAME,0,0,0CASCADE_2CVHAARCLASSIFIERCASCADECVLOADCHARLPTSTRLPCTSTRCASCADE_NAME_2,0,0,0GETDLGITEMIDC_BTNBEGINENABLEWINDOWFALSEGETDLGITEMIDC_BTNPAUSEENABLEWINDOWTRUEGETDLGITEMIDC_BTNENDENABLEWINDOWTRUEGETDLGITEMIDC_SHOWWAVEENABLEWINDOWTRUESETTIMER1,50,NULLVOIDCFATIGUEDETECTIONDLGONBNCLICKEDBTNPAUSE/暂停QUITGETDLGITEMIDC_BTNBEGINENABLEWINDOWTRUEGETDLGITEMIDC_BTNPAUSEENABLEWINDOWFALSEGETDLGITEMIDC_BTNENDENABLEWINDOWFALSEGETDLGITEMIDC_SHOWWAVEENABLEWINDOWFALSEVOIDCFATIGUEDETECTIONDLGONBNCLICKEDBTNEND/结束QUITCDIALOGONOK/控件响应结束/系统消息响应/VOIDCFATIGUEDETECTIONDLGONMOVEINTX,INTY/窗口移动事件附录29CDIALOGONMOVEX,YIFWFCRECTCRTHISGETWINDOWRECTWFMOVECRWIDTHX,CRTOP,CRHEIGHTVOIDCFATIGUEDETECTIONDLGONCLOSE/TODO在此添加消息处理程序代码和/或调用默认值QUITCDIALOGONCLOSE/画图图片指针WPARAM/HDC,RECTLRESULTCFATIGUEDETECTIONDLGONUSERDRAWWPARAMWPARAM,LPARAMLPARAMCVVIMAGEIMGIPLIMAGEIMAGE2IPLIMAGEWPARAMIFIMAGE2IMGCOPYOFIMAGE2/从IPLIMAGE拷贝图像数据到CVVIMAGEIMGDRAWTOHDCHDC,/在控件上绘制图像RETURN0/显示参数/时间WPARAM面积LPARAMLRESULTCFATIGUEDETECTIONDLGONUSERPARAWPARAMWPARAM,LPARAMLPARAMCOUNTDOUBLEPERCLOSPERLOGS_VALUENAREA4,300IFPERCLOSLISTPARAMETERSINSERTSTRINGTHISLISTPARAMETERSGETCOUNT,STRTHISLISTPARAMETERSSENDMESSAGE0X0115,1,0IFPTRPERCLOS5DOUBLEDSUM0附录30FORINTI0I015BEEP1000,100PTRPERCLOS0RETURN0VOIDCFATIGUEDETECTIONDLGONTIMERUINT_PTRNIDEVENTIFNIDEVENT1NAREA2PTRNAREA_TEMPPTRIFPTR300FORINTM0MPOSTTHREADMESSAGEAWM_USER_NEWIMAGE,NULL,LPARAMIMAGERETURN0/线程3识别人脸人眼计算面积STATICUINTCDETECTLPVOIDLPIPLIMAGEIMG_TIPLIMAGEIMG_TEMPMSGMESSAGEWHILETRUEIFISSTOPBREAKWHILEPEEKMESSAGEIFSTORAGECVRELEASEMEMSTORAGEIFCASCADECVRELEASEHAARCLASSIFIERCASCADEIFCASCADE_2附录32CVRELEASEHAARCLASSIFIERCASCADEDWORDDWEXITCODEGETEXITCODETHREADPREADIMAGETHREAD,AFXENDTHREADDWEXITCODERETURN0ELSEIFMESSAGEMESSAGEWM_USER_NEWIMAGELPARAMWP/识别计算IFDETECT_FLAGWPMESSAGELPARAMDETECT_FLAGTRUEIFWPCVRECTFACECOLOR_DETECTIPLIMAGEWPIMG_TCVCLONEIMAGEIPLIMAGEWPIMG_TEMPCVCLONEIMAGEIPLIMAGEWPCVRECTANGLEIPLIMAGEWP,CVPOINTCVRECTX,CVRECTY,CVPOINTCVRECTXCVRECTWIDTH,CVRECTYCVRECTHEIGHT,CV_RGB0,255,0,1IFMESSAGEWPARAM0DETECT_DRAWIPLIMAGEWP,IMG_TEMP,IMG_TCVRESETIMAGEROIIMG_TEMPELSEDETECT_DRAWIPLIMAGEWP,IMG_TEMP,IMG_TCVRELEASEIMAGECVRELEASEIMAGE_EXCEPTEXCEPTION_EXECUTE_HANDLERDETECT_FLAGFALSE附录33TRANSLATEMESSAGEDISPATCHMESSAGERETURN0/线程4记录面积系列STATICUINTCRECORDLPVOIDLPMSGMESSAGEWHILETRUEIFISSTOPBREAKWHILEPEEKMESSAGEDWORDDWEXITCODEGETEXITCODETHREADPREADIMAGETHREAD,AFXENDTHREADDWEXITCODERETURN0ELSEIFMESSAGEMESSAGEWM_USER_NEWPARAMETERIFWF0|WFWFPUSHMESSAGEWPARAMNAREA_TEMPMESSAGEWPARAMTRANSLATEMESSAGEDISPATCHMESSAGERETURN0/线程函数结束/附录34/功能函数/肤色识别/IPLIMAGE图像指针CVRECTFACECOLOR_DETECTIPLIMAGEIMAGEIFIMAGE|ISSTOPRETURNCVRECT0,0,0,0IPLIMAGEIMAGE_TCVCREATEIMAGECVGETSIZEIMAGE,8,IMAGENCHANNELSIMAGE_TCVCLONEIMAGEIMAGEINTROW,COLDOUBLEY,CB,CRINTTEMPMAX_X0,TEMPMAX_Y0,TEMPMIN_XIMAGE_TWIDTH,TEMPMIN_YIMAGE_THEIGHTIPLIMAGEIMAGE_TEMPCVCREATEIMAGECVSIZE320,240,IPL_DEPTH_8U,1UCHARIMGROW_PRTUCHARIMGTEMPROW_PRTFORROW0ROWHEIGHTROWIMGROW_PRTUCHARIMAGE_TIMAGEDATAROWIMAGE_TWIDTHSTEPIMGTEMPROW_PRTUCHARIMAGE_TEMPIMAGEDATAROWIMAGE_TEMPWIDTHSTEPFORCOL0COLWIDTHCOLY0299IMGROW_PRT3COL10587IMGROW_PRT3COL20114IMGROW_PRT3COL3CB1280713IMGTEMPROW_PRT3COL1Y/255CR1280564IMGTEMPROW_PRT3COL3Y/255CBCB0CB0CRCR0CR0IFCB043RETURNCVRECTTEMPMIN_X,TEMPMIN_Y,TEMPMAX_XTEMPMIN_X,TEMPMAX_YTEMPMIN_Y/计算眼睛面积VOIDCONTOUR_PROCESSIPLIMAGEIMAGE,DOUBLEX,DOUBLEYIFIMAGE|ISSTOPRETURNINTSUM0INTWIDTH_TIMAGEWIDTHINTHEIGHT_TIMAGEHEIGHTIPLIMAGEIMAGE_TEMPCVCREATEIMAGECVGETSIZEIMAGE,8,1IPLIMAGEIMAGE_TCVCREATEIMAGECVGETSIZEIMAGE,8,IMAGENCHANNELSIMAGE_TCVCLONEIMAGEIMAGECVSETZEROIMAGE_TEMPCVMEMSTORAGESTORAGECVCREATEMEMSTORAGECVSEQFIRST_CONTOURNULLINTNUM_CONTOURCVFINDCONTOURSIMAGE_T,STORAGE,FORCVSEQCSQFIRST_CONTOURCSQNULLCSQCSQH_NEXTCVDRAWCONTOURSIMAGE_TEMP,CSQ,CVSCALAR255,CVSCALAR255,2,2,8CVSETIMAGEROIIMAGE_TEMP,CVRECTINTXIMAGE_TEMPWIDTH045,INTYIMAGE_TEMPHEIGHT03,INTIMAGE_TEMPWIDTH09,INTIMAGE_TEMPHEIGHT06CVDILATEIMAGE_TEMP,IMAGE_TEMP,NULL,2CVRESETIMAGEROIIMAGE_TEMPFORINTROW0ROWHEIGHTROWUCHARIMGROW_PRTUCHARIMAGE_TEMPIMAGEDATAROWIMAGE_TEMPWIDTHSTEPFORINTCOL0COLWIDTHCOLIFROWHEIGHTELSEIMGROW_PRTCOL10附录36SUMSUM/255CVRELEASEIMAGECVRELEASEIMAGEIFWIDTH_T0WIDTH_T600SUMSUM360000/HEIGHT_T/WIDTH_T/WM_USER_NEWPARAMETERPRECORDTHREADPOSTTHREADMESSAGEAWM_USER_NEWPARAMETER,INTSUM,NULLVOIDDETECT_EYEIPLIMAGEDEST,IPLIMAGEIMAGE,DOUBLEX,DOUBLEY,DOUBLEWIDTH,DOUBLEHEIGHTIFDEST|IMAGE|IMAGENULL|IMAGE0|ISSTOPRETURNDOUBLESCALE13INTI0CVRECTAIPLIMAGEIMAGE_TEMP_TRYIMAGE_TEMPCVCREATEIMAGECVSIZECVGETSIZEIMAGEWIDTH2,CVGETSIZEIMAGEHEIGHT2,8,1CVPYRUPIMAGE,IMAGE_TEMP,CV_GAUSSIAN_5X5IPLIMAGESMALL_IMAGE_2CVCREATEIMAGECVSIZECVROUNDCVGETSIZEIMAGE_TEMPWIDTH/SCALE,CVROUNDCVGETSIZEIMAGE_TEMPHEIGHT/SCALE,8,1CVRESIZEIMAGE_TEMP,SMALL_IMAGE_2,CV_INTER_LINEARCVEQUALIZEHISTSMALL_IMAGE_2,SMALL_IMAGE_2CVCLEARMEMSTORAGESTORAGEIFCASCADE_2IFSTORAGE|SMALL_IMAGE_2|CASCADE_2RETURNCVSEQEYESCVHAARDETECTOBJECTSSMALL_IMAGE_2,CASCADE_2,STORAGE,11,2,CV_HAAR_FIND_BIGGEST_OBJECT,CVSIZE10,10FORITOTAL0IACVRECTCVGETSEQELEMEYES,ICVMOMENTSMOMENTNEWCVMOMENTSDOUBLEM00CVPOINT2D32FCENTERCVSETIMAGEROIIMAGE_TEMP,CVRECTINTAXSCALE,INTAYSCALE,INTA附录37WIDTHSCALE,INTAHEIGHTSCALECVRECTANGLEDEST,CVPOINTINTAXSCALE/2X,INTAYSCALE/2Y,CVPOINTINTXAXAWIDTHSCALE/2,INTYAYAHEIGHTSCALE/2,CV_RGB255,255,0,1CVMOMENTSIMAGE_TEMP,MOMENT,0M00CVGETSPATIALMOMENTMOMENT,0,0CENTERXFLOATCVGETSPATIALMOMENTMOMENT,1,0/M00CENTERYFLOATCVGETSPATIALMOMENTMOMENT,0,1/M00CVCANNYIMAGE_TEMP,IMAGE_TEMP,50,150,3CVCANNYIMAGE_TEMP,IMAGE_TEMP,50,150,3CONTOUR_PROCESSIMAGE_TEMP,CENTERX,CENTERYCVRESETIMAGEROIIMAGE_TEMPPOSTMESSAGEHWND,WM_USER_DRAW,WPARAMDEST,NULLCVRELEASEIMAGECVRELEASEIMAGE_EXCEPTEXCEPTION_EXECUTE_HANDLERVOIDDETECT_DRAWIPLIMAGEDEST,IPLIMAGEIMAGE,IPLIMAGEIMG_TIFDEST|IMAGE|DEST0|IMAGE0|ISSTOPRETURNDOUBLESCALE13CVRECTDETECT_ROI_TRYDETECT_ROICVGETIMAGEROIIMAGEIPLIMAGEIMAGE_TCVCREATEIMAGECVGETSIZEIMG_T,8,1INTI0CVCVTCOLORIMG_T,IMAGE_T,CV_BGR2GRAYIPLIMAGEGRAYCVCREATEIMAGECVGETSIZEIMAGE,8,1IPLIMAGESMALL_IMAGECVCREATEIMAGECVSIZECVROUNDCVGETSIZEIMAGEWIDTH/SCALE,CVROUNDCVGETSIZEIMAGEHEIGHT/SCALE,8,1CVCVTCOLORIMAGE,GRAY,CV_BGR2GRAYCVRESIZEGRAY,SMALL_IMAGE,CV_INTER_LINEARCVEQUALIZEHISTSMALL_IMAGE,SMALL_IMAGECVCLEARMEMSTORAGESTORAGEIFCASCADEIFCASCADE0|STORAGE0|SMALL_IMAGE0|DEST0RETURN附录38CVSEQFACESCVHAARDETECTOBJECTSSMALL_IMAGE,CASCADE,STORAGE,11,2,CV_HAAR_FIND_BIGGEST_OBJECT,CVSIZE30,30FORITOTAL0ICVRECTRCVRECTCVGETSEQELEMFACES,ICVRECTANGLEDEST,CVPOINTINTRXSCALEDETECT_ROIX,INTRYSCALEDETECT_ROIY,CVPOINTINTRXRWIDTHSCALEDETECT_ROIX,INTRYRHEIGHTSCALEDETECT_ROIY,CV_RGB255,0,0,1POSTMESSAGEHWND,WM_USER_DRAW,WPARAMDEST,NULLIFRHEIGHT0DETECT_EYEDEST,IMAGE_T,RXSCALEDETECT_ROIX,RYSCALEDETECT_ROIY,RWIDTHSCALE,RHEIGHTSCALECVRESETIMAGEROIIMAGE_TELSEPOSTMESSAGEHWND,WM_USER_DRAW,WPARAMDEST,NULLDETECT_EYEDEST,IMAGE_T,0,0,CVGETSIZEIMAGE_TWIDTH,CVGETSIZEIMAGE_THEIGHTCVRELEASEIMAGECVRELEASEIMAGECVRELEASEIMAGE_EXCEPTEXCEPTION_EXECUTE_HANDLERVOIDCFATIGUEDETECTIONDLGQUITISSTOPTRUEIFPREADIMAGETHREADPREADIMAGETHREADPOSTTHREADMESSAGEAWM_USER_QUIT,NULL,NULLIFPDETECTTHREADPDETECTTHREADPOSTTHREADMESSAGEAWM_USER_QUIT,NULL,NULLIFPRECORDTHREAD附录39PRECORDTHREADPOSTTHREADMESSAGEAWM_USER_QUIT,NULL,NULLKILLTIMER1SLEEP800IFCAPTURECVRELEASECAPTUREIFSTORAGECVRELEASEMEMSTORAGEIFCASCADECVRELEASEHAARCLASSIFIERCASCADEIFCASCADE_2CVRELEASEHAARCLASSIFIERCASCADE/计算PERCLOS值DOUBLEPERLOGS_VALUEINTPAREA,INTNUMINTRAND17INTTEMP0INTMIN_COUNT0INTFINAL_COUNT300INTMAX_AREAINTMIN_AREA15000DOUBLEMAX_SUMDOUBLEAVR_SUMDOUBLEMIN_SUMFORINTI0IMAX_SUMFINAL_COUNT附录41RETURNDOUBLEMIN_COUNT/FINAL_COUNT/功能函数结束/STDAFXH标准系统包含文件的包含文件,/或是经常使用但不常更改的/特定于项目的包含文件PRAGMAONCEIFNDEF_SECURE_ATLDEFINE_SECURE_ATL1ENDIFIFNDEFVC_EXTRALEANDEFINEVC_EXTRALEAN/从WINDOWS头中排除极少使用的资料ENDIFINCLUDE“TARGETVERH“DEFINE_ATL_CSTRING_EXPLICIT_CONSTRUCTORS/某些CSTRING构造函数将是显式的/关闭MFC对某些常见但经常可放心忽略的警告消息的隐藏DEFINE_AFX_ALL_WARNINGSINCLUDE/MFC核心组件和标准组件INCLUDE/MFC扩展INCLUDE/MFC自动化类IFNDEF_AFX_NO_OLE_SUPPORTINCLUDE/MFC对INTERNETEXPLORER4公共控件的支持ENDIFIFNDEF_AFX_NO_AFXCMN_SUPPORTINCLUDE/MFC对WINDOWS公共控件的支持ENDIF/_AFX_NO_AFXCMN_SUPPORT附录42/自定义消息/

温馨提示

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

评论

0/150

提交评论