基于OpenCV的人脸检测与识别系统

时间:2022-08-06 03:16:20

基于OpenCV的人脸检测与识别系统

摘 要:本论文以OpenCV图像处理库为基础,采用QT作为图形界面开发,具有人脸采集,图片训练,数据库管理及人脸识别等功能,并且使用光线补偿等方式提高识别率。

关键词:OpenCV QT 人脸检测 人脸识别

中图分类号:TP31 文献标识码:A 文章编号:1672-3791(2013)07(b)-0004-02

近年来计算机视觉技术在视觉领域中取得了飞速的发展,并在其他领域中得到了广泛的应用,人脸识别在图像处理与视频检索、视频监控、视频显示等方面占据着重要的位置。本文提出了基于opencv图像处理库的人脸检测识别系统,通过分析人脸检测与识别的原理及方法设计了人脸检测与识别系统,该系统具有人脸采集,图片训练,数据库管理及人脸识别等功能,并且使用了光线补偿等方式更好的进行图像的处理和后期的识别。

1 系统的运行流程图

该人脸检测与识别系统的处理流程如图1。

2 系统详细设计及实现

2.1 人脸定位模块

基于OpenCV的人脸检测中,先进行图像的采集,然后建立自适应模型并将该模型进行训练,使用XML文件保存该训练模型数据,有了这个模型后我们就可以从新使用新的模型来进行图片的对比,把当前的图片与该模型进行匹配得出的结果使用矩形进行标记,并在QT界面上画出该目标区域。

2.2 人脸识别模块

人脸识别的流程为,从摄像头采集图片后对图片进行灰度化处理,分配PCA存储空间,再使用级联分类检测器对图片进行特征提取训练。提取出采集的人脸图片的特征,保存数据到facedata.xml文件。人脸识别的具体实现步骤和函数如下。

(1)得到一个32位的浮动图像。

IplImage* convertFloatImage ToUcharImage(const IplImage *srcImg)

(2)保存源图片的所有特征向量。

void FaceRec::storeEigenfaceImages()

(3)下载需要训练的数据,并将训练好的数据保存到xml文件中。

void FaceRec::learn()

{ szFileTrain = "40.txt"; //训练数据的路径

doPCA(); //为人脸训练分配PCA空间

storeTrainingData(); //将训练好的数据保存到xml文件中

if (SAVE_EIGENFACE_IMAGES)

{storeEigenfaceImages(); //保存这些训练图片为一张位图 }

(4)从摄像头中获取一帧图片。

int FaceRec::recFromFrame(IplImage *faceImage)

(5)从facedata.xml下载训练好的数据。

int FaceRec::loadTrainingData(CvMat ** pTrainPersonNumMat)

(6)为图片分配PCA空间。

void FaceRec::doPCA()

2.3 光线补偿的模块

从摄像头对图像进行采集会受到设备的干扰及环境因素的影响,从而会使图像的色彩向某个固定的方向移动,例如色彩偏黄、变蓝、变黑等。系统为了消除图像的色彩偏差,需要对图像的RGB三个分量值进行线性调整。使用检测图像中亮度在前10%的像素(参考白),按公式计算出调整值。整幅图像的其他像素点的色彩值也都按这一调整尺度进行交换,通过这种技术可以更好的进行图像的处理和后期的识别。

在QT下通过增加菜单栏,在其顶部添加一子目录,将命名为“预处理”,并在其下方的属性栏中命名为“弹出”菜单,右击预处理则该选项会自动生成一个子菜单项,属性名为“光线补偿”,并在右下面的属性中把ID号设置为ID_READY_LIG HTERGTHNSATE,对应文件FaceDetect.Cpp中的函数recognize()实现,并在recFromFrame(IplImage *faceImage)中添加如下代码:

hDIBTempp = gDib.CopyHandle(hDIB);

gDib.LightingComper(hDIB);

GlobalUnlock(hDIB);

Invalidate();

光线补偿通过对图像的RGB进行转换而使图片的光线变亮或变暗,函数LightingComper()是类facerecognize的一个目标函数。

2.4 测试

3 结语

基于OpenCV图像处理库的人脸检测与识别具有人脸采集,图片训练,数据库管理及人脸识别等功能,系统采用Linux作为开发工具,利用QT作为图形界面开发,使用面向对象的思想来编写图像处理模块,并把该模块的各个功能进行独立出来,建立各个独立的类,从而减少了程序之间的耦合性,增加了代码的可重用性和可移植性,系统运行流畅,有广泛的使用前景。

参考文献

[1] 张惠发.人脸识别的关键问题研究[D].吉林大学,2012.

[2] 李友坤.BP神经网络的研究分析及改进应用[D].安徽理工大学,2012.

[3] 褚勤.基于小波分析和支持向量机的人脸识别方法研究[D].华南理工大学, 2012.

[4] 廖文军.基于连续Adaboost算法的多角度人脸检测技术研究与实现[D].南京邮电大学,2012.

[5] 赵晓辉.基于改进的分块LBP人脸识别算法研究[D].昆明理工大学,2012.

上一篇:嗜盐菌的基本特性分析 下一篇:应用电子系统中的自动化控制技术剖析