导读: 本文提出了一种在Linux平台下开发脸辨认体系的计划,经过QT 来开发用户界面,调用OpenCV图画处理库对相机进行收集和处理收集图画,然后完成了人脸检测、身份辨认、简略表情辨认的功用。
人脸辨认的研讨能够追溯到上个世纪六、七十年代,经过几十年的弯曲开展已日趋老练,构建人脸辨认体系需求用到一系列相关技能,包含人脸图画收集、人脸定位、人脸辨认预处理、身份承认以及身份查找等 。而人脸辨认在根据内容的检索、数字视频处理、视频检测等方面有着重要的使用价值,可广泛使用于各类监控场合,因而具有广泛的使用远景。OpenCV是Intel 公司支撑的开源计算机视觉库。它轻量级并且高效–由一系列 C 函数和少数 C++ 类构成,完成了图画处理和计算机视觉方面的许多通用算法,作为一个根本的计算机视觉、图画处理和形式辨认的开源项目,OpenCV 能够直接使用于许多范畴,其中就包含许多能够使用于人脸辨认的算法完成,是作为第2次开发的抱负东西。
1 体系组成
本文的人脸辨认体系在Linux 操作体系下使用QT库来开发图形界面,以OpenCV 图画处理库为根底,使用库中供给的相关功用函数进行各种处理:经过相机对图画数据进行收集,人脸检测首要是调用已练习好的Haar 分类器来对收集的图画进行形式匹配,检测成果使用PCA 算法可进行人脸图画练习与身份辨认,而人脸表情辨认则使用了Camshift 盯梢算法和Lucas–Kanade 光流算法。
2 建立开发环境
选用德国Basler acA640-100gc 相机,PC 机上的操作体系是Fedora 10,并装置编译器GCC4.3,QT 4.5和OpenCV2.2 软件东西包,为了处理视频,编译OpenCV 前需编译FFmpeg,而FFmpeg 还依赖于Xvid库和X264 库。
3 使用体系开发
程序首要流程如图1 所示。
图1 程序流程(visio)
3.1 图画收集
图画收集模块能够经过cvCaptureFromAVI()从本地保存的图画文件或cvCaptureFromCam()从相机得到图画,使用cvSetCaptureProperty()能够对回来的结构进行设置:
IplImage *;CvCapture* cAMEra = 0;
camera = cvCaptureFromCAM( 0 );
cvSetCaptureProperty(camera,
CV_CAP_PROP__WIDTH, 320 );
cvSetCaptureProperty(camera,
CV_CAP_PROP__HEIGHT, 240 );