计算机毕业设计论文 基于OpenCV的疲劳驾驶预警系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
毕业设计(论文)
基于OpenCV的疲劳驾驶预警系统学院:计算机学院
专业:姓名:指导老师:计算机科学与技术
学号:
职称:
二○一一年五月
Xx学院毕业设计
诚信承诺书
本人郑重承诺:我所呈交的毕业设计《基于OpenCV 的疲劳驾驶预警系统》是在指导教师的指导下,独立开展研究取得的成果,文中引用他人的观点和材料,均在文后按顺序列出其参考文献,设计使用的数据真实可靠。
承诺人签名:
日期:年月日
基于OpenCV的疲劳驾驶预警系统
摘要
目前,随着我国人民生活水平的不断提高,汽车已经走进了千家万户,成为人们日常出行的一种重要的交通工具,交通事故也随之增多。
造成交通事故频频发生的重要原因是由于司机的疲劳驾驶。
因此,针对疲劳驾驶方面的研究具有极大的科研价值与设计意义。
系统设计思路是采用OpenCV开源的视频图像处理库,使用摄像头采集视频图像,对输入图像做预处理(图像灰度化、中值滤波等);通过学习训练的方法构造基于类Haar特征的层叠式分类器,利用基于类Haar特征的层叠式分类器从输入图像中直接定位人眼;把人眼部分的图像截取出来,二值化人眼图像;然后计算二值化图像中垂直方向上瞳孔的宽度大小,从而判断眼睛的状态;最后通过多次的捕捉,计算眼睛闭合的频率来得出其疲劳状态。
关键词:疲劳驾驶 OpenCV 类Haar层叠式分类器图像处理眼睛定位
Driver Fatigue Early Warning System Based On OpenCV
ABSTRACT
Now, with our continuous improvement of living standards of people, cars have entered the household, become an important daily travel transport, traffic accidents also increase. Important cause frequent traffic accidents due to driver fatigue driving.Therefore, for fatigue driving has been a significant scientific value and design significance.
Design of system is the use of open source video OpenCV image processing library, the use of video cameras capture images of the input image preprocessing (image graying, median filter, etc.);constructed by learning the training class based on Haar features cascade classifier, using features of class-based Haar classifier cascade of images directly from the input locate the eye;to the human eye out of part of the image capture, binary eye images;and then calculate the binary image in the vertical directionThe width of the size of the pupil, in order to determine the state of eyes;Finally, many of the capture, calculation of the frequency of close to draw the eye fatigue state.
Key words:Fatigue driving OpenCV Haar classifier cascade class Image Processing Eye location
目录
摘要 (I)
ABSTRACT................................ 错误!未定义书签。
1前言 .. (1)
1.1选题背景 (1)
1.2驾驶人疲劳状态监测方法分析 (1)
1.2.1基于驾驶人生理信号的检测方法 (1)
1.2.2基于驾驶人生理反应特征的检测方法 (2)
1.2.3基于驾驶人操作行为的检测方法 (2)
1.2.4基于车辆状态信息的检测方法 (2)
1.3选题目标 (3)
1.4需求分析 (3)
1.4.1用户需求分析 (3)
1.4.2功能需求分析 (3)
1.5本章小结 (4)
2OpenCV介绍 (5)
2.1 OpenCV背景介绍 (5)
2.2 OpenCV应用领域及特点 (5)
2.3 OpenCV在Visual Studio 2005下安装与配置 (5)
2.3.1 OpenCV的安装 (5)
2.3.2 Visual Studio 2005的安装 (8)
3系统方案 (12)
3.1系统总体方案 (12)
3.2系统主要功能 (13)
3.3系统实现原理 (14)
3.4本章小结 (14)
4算法分析 (15)
4.1 AdaBoost算法描述 (15)
4.2 眼睛定位算法 (16)
4.3 基于Haar特征分类器训练生成XML步骤 (17)
4.3.1 采集样本 (17)
4.3.2创立样本VEC文件 (18)
4.3.3训练生成XML (19)
4.4 本章小结 (20)
5详细设计 (21)
5.1程序流程图 (21)
5.2 软件设计 (22)
5.2.1 获取图像 (22)
5.2.2 眼睛定位 (22)
5.2.3 计算眼睛的高度 (23)
5.2.4报警模块 (24)
5.2.5 GUI设计 (24)
6系统测试 (26)
6.1人脸定位及眼睛定位测试 (26)
6.2系统测试结果 (27)
6.3本章小结 (29)
7论文总结 (30)
参考文献 (31)
附录 (32)
谢辞 (34)
1前言
1.1选题背景
随着交通运输业的发展,交通事故已成为当前各国所面临的严重问题。
据不完全统计,全世界每年死于交通事故的人数约为60万,因车祸受伤的人更多,每年平均约有l000万人。
在美国的重型汽车事故中,57%的灾难性事故是与驾驶员疲劳有关,它已成为事故发生的主要原因。
英国交通研究实验室(Transport Research Lab oratory)认为:驾驶疲劳导致的道路交通事故占全部交通事故的10%。
法国国家事故报告表明,因疲劳驾驶而发生车祸的占人身伤亡事故14.9%,占死亡事故的20.6%。
澳大利亚每年由于交通事故的花费约为75 亿美元。
其中,将近15亿是直接由于驾驶员疲劳而导致的。
我国交通事故呈现逐年上升的趋势,1999年我国发生道路交通事故412860起,致伤286080人,死亡83529人,造成直接经济损失21.24亿元。
因此,各国研究人员都在努力开发出一个能实时监视驾驶员警觉水平,并在任何不安全状态下能对驾驶员进行预警的系统。
本系统的设计思想是以OpenCV视频图像处理技术为核心,通过摄像头实时地获取驾驶员的脸部图像,利用脸部识别技术定位眼睛,再根据眼睛的闭合的状态判断驾驶员是否处于疲劳状态。
1.2驾驶人疲劳状态监测方法分析
关于驾驶人疲劳及注意分散等安全状态的监测预警技术,由于它在交通事故预防方面的发展前景而受到各国高度的重视,研究人员根据驾驶人疲劳时在生理和操作上的特征进行了多方面的研究,一些研究成果已形成产品并开始进入市场。
驾驶人疲劳状态的检测方法可大致分为基于驾驶人生理信号、基于驾驶人生理反应特征、基于驾驶人操作行为和基于车辆状态信息的检测方法。
1.2.1基于驾驶人生理信号的检测方法
针对疲劳的研究最早始于生理学。
相关研究表明,驾驶人在疲劳状态下的生理指标会偏离正常状态的指标。
因此可以通过驾驶员的生理指标来判断驾驶人是否进入疲劳状态。
目前较为成熟的检测方法包括对驾驶人的脑电信号EEG、心电信号ECG等的测量。
ECG主要被用于驾驶负担的生理测量中。
研究表明在驾驶人疲劳时ECG会明显的有规律的下降,并且HRV (心率变化)和驾驶中的疲劳程度的变化有潜在的关系。
基于驾驶人生理信号的检测方法对疲劳判断的准确性较高,但生理信号需要采用接触式测量,且对个人依赖程度较大,在实际用于驾驶人疲劳监测时有很多的局限性,因此主要应用在实验阶段,作为实验的对照参数。
1.2.2基于驾驶人生理反应特征的检测方法
基于驾驶人的生理反应特征的检测方法是指利用驾驶人的眼动特性、头部运动特性等推断驾驶人的疲劳状态。
驾驶人眼球的运动和眨眼信息被认为是反映疲劳的重要特征,眨眼幅度、眨眼频率和平均闭合时间都可直接用于检测疲劳。
目前基于眼动机理研究驾驶疲劳的算法有很多种,广泛采用的算法包括PERCLOS,即将眼睛闭合时间占一段时间的百分比作为生理疲劳的测量指标。
利用面部识别技术定位眼睛、鼻尖和嘴角位置,将眼睛、鼻尖和嘴角位置结合起来,再根据对眼球的追踪可以获得驾驶人注意力方向,并判断驾驶人的注意力是否分散。
基于驾驶人生理反应特征的检测方法一般采用非接触式测量,对疲劳状态的识别精度和实用性上都较好。
1.2.3基于驾驶人操作行为的检测方法
基于驾驶人操作行为的驾驶人疲劳状态识别技术,是指通过驾驶人的操作行为如方向盘操作等操作推断驾驶人疲劳状态。
Yoshihiro Takei 利用FFT对监测到的驾驶人的方向盘操作数据进行处理,研究结果在一定程度上揭示了驾驶人的方向盘操作与疲劳之间的关系。
研究指出方向盘的操作是一种有效的驾驶疲劳的判断手段。
Yabuta开发的驾驶人防疲劳装置中也使用了方向盘操作信息。
总体来说,目前利用驾驶人操作行为进行疲劳识别的深入研究成果较少。
驾驶人的操作除了与疲劳状态有关外,还受到个人习惯、行驶速度、道路环境、操作技能的影响,车辆的行驶状态也与车辆特性、道路等很多环境因素有关,因此如何提高驾驶人状态的推测精度是此类间接测量技术的关键问题。
1.2.4基于车辆状态信息的检测方法
利用车辆行驶轨迹变化和车道线偏离等车辆行驶信息也可推测驾驶人的疲劳状态。
这种方法和基于驾驶人操作行为的疲劳状态识别技术一样,都以车辆现有的装置为基础,不需添加过多的硬件设备,而且不会对驾驶人的正常驾驶造成干扰,因此具有很高的实用价值。
日本三菱汽车公司开发了利用车辆横向位移量、驾驶人操作量等复合参数来识别驾驶人疲劳状态的方法,实验证明该方法的识别结果与利用驾驶人眨眼次数的识别结果基本一致。
日本庆应大学(2005)中岛研究室利用EEG评价驾驶人的睡意,研究发现车辆的横向位移量、方向盘操作量可以用来作为驾驶人疲劳状态的评价指标,而且可以实现疲劳早期预警。
1.3选题目标
基于上述背景,开发一个疲劳驾驶预警系统,采用OpenCV视频图像处理技术,Windows XP作为操作系统,以C#作为编程开发语言,根据系统的需求,分析系统各个模块,如驾驶员脸部图像获取,眼睛定位,图像二值化处理,眼睛高度计算算法,以及疲劳状态的判断算法,实现并完善系统的功能。
1.4需求分析
1.4.1用户需求分析
目前,已经有一些公司专门开发和生产疲劳驾驶装置,如南京远驱科技有限公司开发的疲劳驾驶预警系统gogo850平安行,采用国际上最先进的非接触式方式,利用汽车级图像传感器采集人脸红外图像,性能超过奔腾二代的高速数字信号处理器进行数字图像处理与分析,先进的疲劳算法确保驾驶员在疲劳驾驶的时候及时发出报警信号,保障您的生命与财产安全。
其功能特点:全天候工作特点、优秀的眼镜识别水平、领先的人脸识别技术、丝网膜瞳孔检测技术、智能高速识别功能、体积小巧,安装方便、自动灵敏度控制、人性化的指示灯、智能化的报警灵敏度调节。
由此,本系统也尽量适应用户需求,完善系统功能,使得更为人性化。
设计开发多种功能模块:二值化滑动条调节:适应不同的光线强度及提高判断精度;采用红外线摄像头可以识别戴各种眼镜驾驶的司机;系统可以动态显示二值化眼睛状态:便于测试和观察结果;更为人性化的语音提示:当判断处于疲劳状态时,系统会发出警报声。
1.4.2功能需求分析
根据用户的需求和项目的定位,从提升产品价值的角度出发,划分项目的各个功能模块,具体如下:
1、实时的获得驾驶员的脸部图像,实时显示从摄像头获取的图像;
该功能使系统更为直观的显示摄像头工作状态,实时获取驾驶员的状态图像。
2、动态的显示二值化后的眼睛状态图像;
该功能是为了统计与判断驾驶员的眼睛闭合状态连续的帧数,对疲劳状态进行判断提供依据。
3、具有可调节二值化强度的滑动条;
该功能是为了适应不同的光照强度,可以提供用户自行设置二值化的强度,这样,对疲劳状态的判断更为精确有效。
4、具有语音提示功能及报警提示窗口;
该功能通过语音提示可以提醒用户注意休息,更为人性化的设计,有利于产品化设想。
5、系统界面的美化;
系统界面美化是使用Photoshop进行图片的美化处理设计,按钮也是使用图片作为按钮,使得系统更为美观,有利于产品化设想。
1.5本章小结
本章主要介绍了项目的选题背景、四种驾驶人疲劳状态的检测方法的分析与比较和需求分析。
本系统采用的疲劳状态检测方法是基于人眼的生理反应特征的方法实现,选择该方法的原因是相对其他方法而言,人眼的生理反应特征是最直接,最直观的反应驾驶员是否处于疲劳状态的一种表现。
根据本人技术水平情况,按需求划分软件功能模块,系统采用基于人眼的设计思路进行详细设计。
2OpenCV介绍
2.1 OpenCV背景介绍
OpenCV(Open Source Computer Vision Library)于1999年由Intel建立,现在由Willow Garage提供支持。
OpenCV是一个基于BSD许可证授权(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。
它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
2.2 OpenCV应用领域及特点
OpenCV有其显著的不可比拟的优点,主要体现在如下几个方面:
(1)OpenCV是一个包含了超过300个C函数的应用编程接口,它不依赖于外部库,既可以独立运行,也可在运行时使用其它外部库。
(2)高性能:OpenCV中所有的算法都是基于封装于IPL的具有很高灵活性的动态数据结构,而且其中有一半以上的函数在设计及汇编时被Intel公司针对其所生产的处理器优化。
(3)跨平台:OpenCV除了可以在Windows下运行,也可以在Linux、Mac OS 等系统上使用。
(4)开源性:不管对于商业的还是非商业的用途,OpenCV都是完全免费的,其源代码完全开放,开发者可以对源代码进行修改,将自己设计的新类添加到库中,只要设计符合规范,自己的代码也可以被别人广泛使用。
OpenCV主要运用于人机互动、物体识别、图像分割、人脸识别、动作识别、运动跟踪以及机器人等图像处理方面。
2.3 OpenCV在Visual Studio 2005下安装与配置
2.3.1 OpenCV的安装
安装OpenCV 1.0 ,安装路径为默认路径C:\Program Files\OpenCV 。
安装步骤如下图所示:
图2-1 OpenCV安装步骤一
图2-2 OpenCV安装步骤二
图2-3 OpenCV安装步骤三
图2-4 OpenCV安装步骤四
安装完成后设置环境变量,操作如下:右键“我的电脑”->“属性”->点
“高级”标签->“环境变量”选项->在"PATH"中添加路径C:\Program Files\OpenCV\bin,如下图所示:
图2-5 添加系统环境变量
2.3.2 Visual Studio 2005的安装
配置环境路径操作如下:
1、打开Visual Studio 2005,依次选择:工具-》选项-》项目和解决方案-》VC++目录。
在“显示以下内容的目录”中选择“可执行文件”,在下面添加如下的路径:C:\Program Files\OpenCV\bin 。
如下图所示:
图2-6 添加可执行文件路径
2、在“显示一下内容的目录”中选择“包含文件”,在下面添加如下的路径:
C:\Program Files\OpenCV\otherlibs\highgui ;
C:\Program Files\OpenCV\otherlibs\cvcam\include ;
C:\Program Files\OpenCV\otherlibs\_graphics\include ;
C:\Program Files\OpenCV\ml\include ;
C:\Program Files\OpenCV\cxcore\include ;
C:\Program Files\OpenCV\cvaux\include ;
C:\Program Files\OpenCV\cv\include。
如下图所示:
图2-7 添加包含文件路径
3、在“显示以下内容的目录”下选择“库文件”,在下面添加如下的路径:C:\Program Files\OpenCV\lib;
C:\Program Files\OpenCV\otherlibs\_graphics\lib。
如下图所示:
图2-8 添加库文件路径
4、在“显示以下内容的目录”下选择“源文件”,在下面添加如下目录:C:\Program Files\OpenCV\otherlibs\cvcam\src\windows;
C:\Program Files\OpenCV\otherlibs\_graphics\src;
C:\Program Files\OpenCV\ml\src;
C:\Program Files\OpenCV\cxcore\src;
C:\Program Files\OpenCV\cvaux\src\vs;
C:\Program Files\OpenCV\cv\src;
C:\Program Files\OpenCV\cvaux\src;
如下图所示:
图2-9 添加源文件路径
5、项目-》添加引用-》浏览。
找到EmguCV下的四个Dll文件:
Emgu.CV.dll,Emgu.Util.dll,ZedGraph.dll,.dll。
全部添加到当前工程的引用。
然后在窗体的源程序中添加:
using Emgu.CV;
using Emgu.Util;
2.4 本章小结
OpenCV是一个开源的强大的图像视觉处理库,在图像处理方面有着显著的优势。
本章主要介绍了OpenCV技术及其应用领域、OpenCV的安装与配置。
为软件开发作准备。
3系统方案
3.1系统总体方案
根据疲劳驾驶预警系统的功能与技术要求情况,系统采用OpenCV图像处理视觉库,设计基于OpenCV的疲劳驾驶预警系统。
各部分简要介绍如下:操作系统选用基于普通PC机Windows XP,硬件设备选用高清USB摄像头。
简单的硬件设备,相对而言,系统的稳定性与精准性相对差一些。
但是,便于开发本系统。
应用程序框架:采用.NET Framework 2.0 并结合OpenCV技术,具有丰富强大的图像处理动态链接库,使用的编程开发语言是C#。
系统的开发环境如下:
硬件环境:一台普通PC机、一个摄像头;
软件环境:Windows XP、.NET Framework 2.0、Visual Studio 2005、OpenCV、Emgu.CV库。
本系统具有实时性,实用性,非触摸性,简单操作性等特点,并不局限于车载中,也适用于其他需要通过眼睛状态判断人的状态的的设备中。
系统总体方案框图如下:
图3-1系统框图
3.2系统主要功能
获取图像:通过摄像头实时地获取驾驶员的图像并在程序显示,得到驾驶员状态图像。
眼睛定位:为了提取出眼睛区域的图像,使用眼睛识别定位算法。
二值化:将提取出来的眼睛区域图像进行二值化处理,方便后续的操作。
计算眼睛高度:通过扫描二值化图像的黑像素点,得到眼睛最高点与最低点两个点的坐标,从而计算出眼睛的高度值。
判断疲劳状态:通过对连续五帧的眼睛高度值的比较,从而得知是否处于疲劳状态。
语音提示:当驾驶员处于疲劳状态时,系统会发出语音提示,提醒驾驶员注意休息
3.3系统实现原理
1、通过摄像头调用OpenCV 视觉库的函数连续获取图片;
2、使用通过OpenCV 自带的haar 特征训练器生成的XML 文件,定位眼睛并将其截取下来;
3、将截取下来的眼睛图像进行二值化处理;
4、通过扫描二值化图像的黑像素点,得到眼睛最高点与最低点的坐标,通过坐标差值计算出眼睛上下的高度值;
5、当检测到眼睛的高度值小于或等于设定的眼睛高度阈值,则记录下来,若连续五帧眼睛的高度值都小于或等于阈值,则系统判认为驾驶员是处于疲劳状态;
6、最后系统就会发出警报声,提醒驾驶员应当注意休息。
图3-2系统原理图
3.4本章小结
本章主要介绍系统的总体方案、基于该方案进行了主要功能的设计以及分析本系统的实现原理。
获取图像 眼睛定位 二值化 计算眼睛高度
4 算法分析
4.1 AdaBoost 算法描述
AdaBoost 算法的基本思想就是利用大量的分类能力一般的弱分类器(weak classifier)通过一定的方法叠加起来构成一个具有很强分类能力的强分类器( strong classifier)。
最初的方法是限定每一层强分类器的个数,改进的方位为检测率和误检率的要求。
一个弱分类器h j (x)包括以下三部分:矩形特征ƒj , 一个分类阈值θj 以及一个分类符号P j 。
并且满足以下关系:
(4-1)
矩形特征是AdaBoost 算法中规定的几种标准的矩形模式,一般为二到三个矩形组成;分类阈值如式(1)所示是一个对所有矩形进行分类的特定值;分类符号则是和分类阈值配合对所有矩形分类的一个方向符号。
强分类器的生成方式是以弱分类器的投票决定的,不停地向强分类器中加入弱分类器,这些弱分类器是经过选择的最优分类器,直到特定的需求得到满足为止,这个特定需求在原始的AdaBoost 算法中是大于1/2,也就是说比猜测强就可以了,而在改进的AdaBoost 算法中则是必须达到训练时指定的检测率和误检率为止。
一个强分类器就可以对待检测区域进行判决,通过的则进入下一级强分类器或者给出检测结果,否则就直接可以被排除。
具体操作过程如图所示:
图4-1强分类器判决过程
4.2 眼睛定位算法
为了得到眼睛图像的信息,必须进行眼睛定位。
现有的眼睛定位方法有很多,基于肤色模型的方法、灰度投影法、基于模板的方法、基于神经网络的方法、基于特征提取等。
本系统利用AdaBoost 算法构造一个基于类Haar 特征的层叠式分类器来进行人眼的定位。
类Haar 特征通常由2~4个矩形组成,如图所示:
图4-2类Haar 特征矩形
矩形特征A 、B 表示两个形状大小相同的矩形区域内所有像素和的差值;矩形特征C 表示外面的两个矩形的像素和减去中间矩形的像素和;矩形特征D 表示对角矩形内像素和之差。
为了方便计算,在这里引进积分图像概念:
(4-2)
这样,这些矩形特征就能用积分图像中的几个点表示。
然而,一幅图像的矩形特征远远比它的像素的个数要多,必须有一个高效的分类器才能有效地筛选出有用的特征。
Freund 等人在Boosting 算法的基础上提出了AdaBoost 算法,其主要思想是给定一弱学习算法和一训练集,通过训练后将弱学习算法提升为强学习算法。
这样只要找到一个比随机猜测好一点的弱学习算法提升为强学习算法,就不必直接去找通常情况下很难获得的强学习算法。
利用AdaBoos 算法,从所有的矩形特征中选择一个,训练出一组比随机猜测略好一点的分类器,加权组合成一个层叠式分类器。
层叠式分类器是一个退化的决策树结构,如图所示:
图4-3层叠式分类器结构
假设每个分类器可识别50%的非目标模式,且目标模式的错分概率为012%,则h=01998,f=015。
如果N=12那么最终识别正确率约为9716%,误检测率约为01024%。
在算法的训练过程中,最好的分类器不断地被加进来,直到达到所需的误检测率为止。
B
4.3 基于Haar特征分类器训练生成XML步骤
在训练分类器时,需要很大数量的目标图像集合和非目标图像集合来构造正、负样本库。
一般步骤如下:
1、采集正、负样本;
2、训练分类器;
3、将每一层训练好的强分类器串联起来组成层叠分类器, 用于目标检测。
4.3.1 采集样本
1、将正负样本分别放在两个不同的文件夹,分别取名pos和neg,其中pos
用来存放正样本图像,neg用来存放负样本
图4-4正负样本文件夹
2、建立正负样本的说明文件
假定根目录在D:\boost下面。
在cmd下面进入pos目录,输入dir /b > pos.txt
图4-5建立正样本说明文件
3、打开pos.txt将BMP全部替换成BMP 1 0 0 24 24,最后删除文本中最
后一行的“pos.txt”
4、同理,负样本执行同样的操作。
4.3.2创立样本VEC文件
1、将opencv_createsamples.exe和opencv_haartraining.exe拷到根目录
下
2、在CMD下输入如下命令:
opencv_createsamples.exe -vec pos.vec -info pos\pos.txt -bg neg\neg.txt -w 40 -h 40 -num 142
以上参数的含义如下:
-vec <vec_file_name>
训练好的正样本的输出文件名。
-img<image_file_name>
源目标图片(例如:一个公司图标)
-bg<background_file_name>
背景描述文件。
-num<number_of_samples>
要产生的正样本的数量,和正样本图片数目相同。
-bgcolor<background_color>
背景色(假定当前图片为灰度图)。
背景色制定了透明色。
对于压缩图片,颜色方差量由bgthresh
参数来指定。
则在bgcolor-bgthresh 和bgcolor+bgthresh 中间的像素被认为是透明的。
-bgthresh<background_color_threshold>
-inv
如果指定,颜色会反色
-randinv
如果指定,颜色会任意反色
-maxidev<max_intensity_deviation>
背景色最大的偏离度。
-maxangel<max_x_rotation_angle>
-maxangle<max_y_rotation_angle>,
-maxzangle<max_x_rotation_angle>
最大旋转角度,以弧度为单位。
-show
如果指定,每个样本会被显示出来,按下"esc"会关闭这一开关,即不显示样本图片,而创建过程
继续。
这是个有用的debug 选项。
-w<sample_width>
输出样本的宽度(以像素为单位)
-h《sample_height》
输出样本的高度,以像素为单位。
图4-6执行opencv_createsamples.exe
按下回车后我们的正样本
图4-7生成样本VEC文件
4.3.3训练生成XML
1、在CMD下输入如下命令:
opencv_haartraining.exe -data xml -vec pos.vec -bg neg\neg.txt -w 40 -h 40 -mem 800
参数说明如下:
Haartraining 的命令行参数如下:
-data<dir_name>存放训练好的分类器的路径名。
-vec<vec_file_name>正样本文件名(由trainingssamples 程序或者由其他的方法创建的)
-bg<background_file_name>背景描述文件。
-npos<number_of_positive_samples>,
-nneg<number_of_negative_samples>用来训练每一个分类器阶段的正/负样本。
合理的值是:
-nPos = 7000;nNeg = 3000-nstages<number_of_stages>训练的阶段数。
-nsplits<number_of_splits>决定用于阶段分类器的弱分类器。
如果1,则一个简单的stump classifier 被使用。
如果是2 或者更多,则带有number_of_splits 个内部节点的CART 分类器被使用。
-mem<memory_in_MB>预先计算的以MB 为单位的可用内存。
内存越大则训练的速度越快。
-sym(default)-nonsym指定训练的
目标对象是否垂直对称。
垂直对称提高目标的训练速度。
例如,正面部是垂直对称的。
-minhitrate《min_hit_rate》每个阶段分类器需要的最小的命中率。
总的命中率为min_hit_rate 的number_of_stages 次方。
-maxfalsealarm<max_false_alarm_rate>没有阶段分类器的最大错误报警率。
总的错误警告率为max_false_alarm_rate 的
number_of_stages 次方。
-weighttrimming<weight_trimming>指定是否使用权修正和使用多大的权修正。
一个基本的选择是0.9-eqw
-mode<basic(default)|core|all>选择用来训练的haar 特征集的种类。
basic 仅仅使用垂直特征。
all 使用垂直和45 度角旋转特征。
-w
《sample_width》-h《sample_height》训练样本的尺寸,(以像素为单位)。
必须和训练样本创建的尺寸相同
图4-8执行opencv_haartraining.exe
2、然后按回车开始训练,生成人眼特征的XML
4.4 本章小结
本章介绍眼睛定位算法的实现原理以及眼睛特征分类器的详细训练步骤,为软件调用眼睛特征的XML文件提供准备。
XML文件的训练是本系统的重要环节,缺少此环节,系统将无法定位眼睛。