康熙雍正乾隆是什么关系| 江西景德镇有什么好玩的地方| 划船是什么意思| 阿鼻地狱是什么意思| 与世隔绝的绝是什么意思| 碳酸钙d3颗粒什么时候吃最好| 睡觉容易醒是什么原因| rhc血型阳性是什么意思| 皮内瘤变到底是什么意思| 基层是什么意思| 初心是什么| 频发室性早搏吃什么药| 珊瑚绒是什么面料| 十个一是什么| 肝功能异常是什么| 雷人是什么意思| 心动过缓吃什么药最好| 什么得当| 泌乳素偏高是什么原因| 做完核磁共振后需要注意什么| 贾乃亮演过什么电视剧| 咳嗽有黄痰是什么原因| 寄生虫是什么意思| 为什么会脾虚| 属猴的本命佛是什么佛| 风水轮流转什么意思| 9像什么| 怀孕了什么时候做检查| 属狗的本命佛是什么佛| 两点是什么时辰| 北极熊是什么颜色的| 心肾不交吃什么中成药| 秦二世叫什么名字| 珍珠状丘疹有什么危害| 木羽念什么| 尿是红色的是什么原因| 突然头疼是什么原因| 考试吃什么| 毛囊炎挂什么科| rd是什么| 四月初一是什么星座| 嘚瑟是什么意思| 手脱皮吃什么维生素| tia是什么| 三叉神经痛吃什么药效果最好| 鳖是什么动物| 骞字五行属什么| 碳酸氢钠是什么东西| 六月二十五号是什么星座| 啤酒鸭可以放什么配菜| 春砂仁与什么煲汤最佳| 喉咙发炎吃什么消炎药| 查血糖血脂挂什么科| 什么食物对肝有好处| 胃酸过多是什么原因造成的| 霉菌性阴道炎用什么药好| 为什么手抖| 妯娌是什么意思| 21金维他有什么作用| 妇炎康片有什么副作用| 北京西单附近有什么好玩的| 性生活过多有什么危害| 圣女果是什么水果| 未见卵黄囊是什么意思| 不明觉厉什么意思| 锅包肉是什么肉| 吃红苋菜有什么好处| 2017年属什么生肖| 环移位了会出现什么症状| 食物中毒用什么药| 腿发热是什么原因引起的| 电离辐射是指什么| 尿失禁是什么症状| 双数是什么| 上将是什么级别| 水煮鱼片用什么鱼| 榴莲与什么食物相克| 无致病菌生长是什么意思| 头疼恶心想吐是什么原因| 五什么四什么| 喝酒过敏吃什么药| 什么眼霜好| 脾胃虚弱吃什么水果| 胳膊脱臼什么症状| 小孩的指甲脱落是什么原因| jm是什么| 微创人流和无痛人流有什么区别| 腊肉配什么菜炒好吃| 打嗝是什么病的前兆| 藿香正气水治疗什么病| 亚五行属什么| 人的运气跟什么有关| 精液是什么味道的| 老鼠爱吃什么| 眼压高什么症状| 安置房和商品房有什么区别| 颔是什么部位| 夕阳无限好只是近黄昏是什么意思| 什么是顶香人| 水痘长什么样| 什么是肠易激综合征| 体雕是什么| ky什么意思| 开除公职是什么意思| 营养过剩会导致什么| 有机和无机是什么意思| 桃花什么时候开放| 喝什么利尿效果最好| 35岁月经量少是什么原因| 审时度势是什么意思| 上什么环最好最安全伤害小| 犯花痴什么意思| 黥面是什么意思| 不孝有三无后为大是什么意思| 什么的拼音怎么写| 高丽参适合什么人吃| 耳朵响吃什么药| 血糖高的人能吃什么水果| 乐得什么填词语| 眼色是什么意思| autumn是什么意思| 慈禧属什么生肖| 白细胞低有什么症状| 澳大利亚说什么语| panerai是什么牌子| 水变成冰为什么体积变大| 眼科pd是什么意思| 颈椎吃什么药| cm2是什么单位| crispy是什么意思| 五月二十四号是什么星座| 禾加一笔是什么字| 老婆的弟弟叫什么| 昱怎么读音是什么| 龟头炎看什么科| 亲吻是什么意思| 喝菊花水有什么好处| 走路出汗多是什么原因| 梦到吃螃蟹是什么意思| 什么鱼没有刺| 梦见好多虫子是什么意思| 洗牙喷砂是什么意思| 飞机是什么| saba是什么药| 为什么左眼皮一直跳| 劲头是什么意思| acer是什么牌子的电脑| 血糖高吃什么水果好能降糖| 眼睛充血是什么原因造成的| 生肖蛇五行属什么| 吸尘器什么牌子好| 雪青色是什么颜色| 狗属于什么类动物| 侯字五行属什么| 天朝是什么意思| 长期吃优甲乐有什么副作用| 胰岛素抵抗有什么症状| 淋巴吃什么药可以消除| 补体c3偏低是什么意思| 耳朵红热是什么原因| 水痘有什么症状| 耳闷耳堵是什么原因引起的| spank是什么意思| 吃什么对卵巢有好处| 医生停诊是什么意思| 70是什么意思| jay是什么意思| 眼皮黑是什么原因| 乌豆和黑豆有什么区别| 来月经可以吃什么| 左室舒张功能减退是什么意思| 抹茶是什么意思| 一什么桃花| 尿酸高不能吃什么食物| 梦到鬼是什么意思| 97年五行属什么| 人为什么要死| 胃炎吃什么药| 淑字五行属什么| 蚂蚁喜欢吃什么| 僵尸是什么| 什么鲸鱼最大| 劳力士手表什么档次| 下午五点多是什么时辰| 尿常规隐血弱阳性什么意思| 单核细胞偏高是什么意思| 霆字五行属什么| 8月7日是什么星座| 点痣挂什么科室| 马来西亚说什么语言| 北京居住证有什么用| 有两把刷子是什么意思| 什么的诉说| 今年什么生肖| 梦见桥塌了有什么预兆| 10月23号是什么星座| 后脑勺胀痛什么原因| 6月20日什么星座| 咬肌疼是什么原因| 卡介苗什么时候接种| 龙和什么相冲| 粉玫瑰花语是什么意思| 女人小肚子疼是什么原因| 柏读什么| 一岁半宝宝反复发烧是什么原因| 人渣是什么意思| 什么肉不含嘌呤| 官能是什么意思| sage是什么颜色| 马桶堵了用什么疏通| 磨豆腐是什么意思| 决心是什么意思| 骄阳是什么意思| 八哥鸟吃什么饲料最好| 被蜱虫咬了有什么症状| 经血逆流的症状是什么| 女生小便带血是什么原因| 肠胃炎饮食要注意什么| 九头身是什么意思| 喝酒之前吃什么保护胃| 内蒙古简称什么| 为什么呢| 输卵管堵塞什么症状| 筱的意思是什么| 女属羊和什么属相最配| 脂肪瘤吃什么药| 鸡血藤长什么样子图片| 宝宝风寒感冒吃什么药最好| 血脂稠吃什么药最好| 用盐袋子热敷小肚子有什么功效| 律的右边读什么| 什么紫什么红| 什么头什么臂| 什么品牌的书包质量好| 焦虑症吃什么药好| 提溜是什么意思| 吃什么水果| 妄想症吃什么药| 血小板压积偏高是什么原因| 1月11日什么星座| 不变应万变是什么意思| 胸外扩是什么样子| 双鱼座和什么座最配对| 四个火读什么字| 反清复明是什么意思| 传统是什么意思| 平片是什么| 看包皮挂什么科| 头皮痒用什么药最有效| 背疼挂什么科| 结膜出血用什么眼药水| 上升星座什么意思| 邓超是什么星座| 胜肽的主要功能是什么| hvp是什么| 富豪是什么意思| 霉菌性阴道炎是什么引起的| 工勤人员是什么意思| 什么是同性恋| 特别想睡觉是什么原因| 蜂窝数据什么意思| 吃李子有什么好处和坏处| 飞机后面的白烟是什么| 白脸代表什么| 百度
当前位置:首页 > 工业控制 > 工业控制
[导读]导读: 本文提出了一种在Linux平台下开发脸识别系统的方案,通过QT 来开发用户界面,调用OpenCV图像处理库对相机进行采集和处理采集图像,从而实现了人脸检测、身份识别、简单表情识别的功能。人脸识别的研究可以追溯

导读: 本文提出了一种在Linux平台下开发脸识别系统的方案,通过QT 来开发用户界面,调用OpenCV图像处理库对相机进行采集和处理采集图像,从而实现了人脸检测、身份识别、简单表情识别的功能。

人脸识别的研究可以追溯到上个世纪六、七十年代,经过几十年的曲折发展已日趋成熟,构建人脸识别系统需要用到一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等 。而人脸识别在基于内容的检索、数字视频处理、视频检测等方面有着重要的应用价值,可广泛应用于各类监控场合,因此具有广泛的应用前景。OpenCV是Intel 公司支持的开源计算机视觉库。它轻量级而且高效--由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法,作为一个基本的计算机视觉、图像处理和模式识别的开源项目,OpenCV 可以直接应用于很多领域,其中就包括很多可以应用于人脸识别的算法实现,是作为第二次开发的理想工具。

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 );

然后利用start()函数开启QTimer 定时器,每隔一段时间发送信号调用自定义的槽函数,该槽函数用cvGrab()从视频流中抓取一帧图像放入缓存,再利用CvRetrieve()从内部缓存中将帧图像读出用于接下来的处理与显示。在qt 中显示之前,需将IplImage* source 转换为QPixmap 类型。

uchar *qImageBuffer = NULL;

/*根据图像大小分配缓冲区*/

qImageBuffer = (uchar*) malloc(source-》width *

source->height * 4 * sizeof(uchar));

/*将缓冲区指针拷贝到存取Qimage 的指针中*/

uchar *QImagePtr = qImageBuffer;

/* 获取源图像内存指针*/Const uchar*

iplImagePtr=reinterpret_cast/<uchar*》>(source->imageDat

a);

/*通过循环将源图像数据拷贝入缓冲区内*/

for (int y = 0; y < source->height; ++y){

for (int x = 0; x < source->width; ++x){

QImagePtr[0] = iplImagePtr[0];

QImagePtr[1] = iplImagePtr[1];

QImagePtr[2] = iplImagePtr[2];

QImagePtr[3] = 0;

QImagePtr += 4;

iplImagePtr += 3; }

iplImagePtr+=source->widthStep–3*source->width; }

/*将Qimage 转换为Qpixmap*/QPixmap local =

QPixmap::fromImage(QImage(qImageBuffer,source-》wi

dth,source-》height, QImage::Format_RGB32));

/*释放缓冲区*/

free(qImageBuffer);

最后利用QLabel 的setPixmap()函数进行显示。

3.2 图像预处理

由于大部分的脸部检测算法对光照,脸部大小,位置表情等非常敏感, 当检测到脸部后需利用cvCvtcolor()转化为灰度图像,利用cvEqualizeHist()进行直方图归一化处理。

3.3 脸部检测方法

OpenCV采用一种叫做Haar cascade classifier 的人脸检测器,他利用保存在XML 文件中的数据来确定每一个局部搜索图像的位置,先用cvLoad()从文件中加载CvHaarClassifierCascade 变量, 然后利用cvHaarDetectObjects()来进行检测,函数使用针对某目标物体训练的级联分类器在图像中找到包含目标物体的矩形区域,并且将这些区域作为一序列的矩形框返回,最终检测结果保存在cvRect 变量中。

3.4 脸部识别方法

识别步骤及所需函数如图2 所示。


图2 识别步骤(visio)

PCA 方法(即特征脸方法)是M.Turk 和A.Pentland在文献中提出的,该方法的基本思想是将图像向量经过K-L 变换后由高维向量转换为低维向量,并形成低维线性向量空间,即特征子空间,然后将人脸投影到该低维空间,用所得到的投影系数作为识别的特征向量。识别人脸时,只需将待识别样本的投影系数与数据库中目标样本集的投影系数进行比对,以确定与哪一类最近。

PCA 算法分为两步:核心脸数据库生成阶段,即训练阶段以及识别阶段。

3.4.1 训练阶段

主要需要经过如下的几步:

(1) 需要一个训练人脸照片集。

(2) 在训练人脸照片集上计算特征脸,即计算特征值,保存最大特征值所对应的的M 张图片。这M 张图片定义了“特征脸空间”(原空间的一个子空间)。当有新的人脸添加进来时,这个特征脸可以进行更新和重新计算得到。

(3) 在“特征脸空间”上,将要识别的各个个体图片投影到各个轴(特征脸)上,计算得到一个M 维的权重向量。简单而言,就是计算得到各个个体所对应于M 维权重空间的坐标值。

OpenCV 实现为:先用cvLoadImage()载入图片并利用cvCvtcolor()转换为灰度图片,建立自定义的迭代标准CvTermCriteria,调用cvCalcEigenObjects()进行PCA 操作,计算出的Eigenface 都存放在向量组成的数组中,利用cvEigenDecomposite()将每一个训练图片投影在PCA 子空间(eigenspace)上,结果保存在矩阵数组中,用cvWrite《datatype》()将训练结果保存至XML文件中。下面图3 为训练得到的部分特征脸图像。


图3 特征脸图像

3.4.2 身份识别阶段

在识别新的人脸图片时,具体的操作方法流程如下:

(1) 基于前面得到的M 个特征脸,将新采集的图片投影到各个特征脸,计算得到一个权重集合(权重向量)。

(2) 判断新图片是否是一幅人脸图像,即通过判断图像是否足够靠近人脸空间。

(3) 如果是人脸图像,则根据前面计算的权重集合(权重向量),利用权重模式将这个人脸分类划归到初始时计算得到的各个个体或者是成为一个新 的个体照片。简单而言,就是计算新权重到原来各个个体权重的距离,选择最近的,认为是识别成这个个体;如果最近的距离超出阈值,则认为是一个新的个体。

(4) 更新特征脸或者是权重模式。

(5) 如果一个未知的人脸,出现了很多次,也就意味着,对这个人脸没有记录,那么计算它的特征权重(向量),然后将其添加到已知人脸中[6]。

OpenCV 实现调用cvRead《datatype》()加载训练结果XML 文件,调cvEigenDecomposite()将采集图片映射至PCA 子空间,利用最近距离匹配方法SquaredEuclidean Distance,计算要识别图片同每一个训练结果的距离,找出距离最近的即可。

3.5 脸部表情识别

脸部运动跟踪利用了Camshift 算法,该算法利用目标的颜色直方图模型将图像转换为颜色概率分布图,初始化一个搜索窗的大小和位置,并根据上一帧得到的结果自适应调整搜索窗口的位置和大小, 从而定位出当前图像中目标的中心位置。

Camshift 能有效解决目标变形和遮挡的问题,对系统资源要求不高,时间复杂度低,在简单背景下能够取得良好的跟踪效果。

Camshift 的OpenCV 实现分以下几步:

(1)调用cvCvtColor()将色彩空间转化到HSI 空间,调用cvSplit()获得其中的H 分量。

(2) 调用cvCreateHist()计算H 分量的直方图,即1D 直方图。

(3) 调用cvCalcBackProject()计算Back Projection.

(4) 调用cvCamShift()输出新的Search Window 的位置和面积。

我们利用光流算法评估了两帧图像的之间的变化,Lucas–Kanade 光流算法是一种两帧差分的光流估计算法。它计算两帧在时间t 到t +δt 之间每个每个像素点位置的移动。是基于图像信号的泰勒级数,就是对于空间和时间坐标使用偏导数。

首先要用到shi-Tomasi 算法,该算法主要用于提取特征点,即图中哪些是我们感兴趣需要跟踪的点,对应函数为cvGoodFeaturesToTrack(),可以自定义第一帧特征点的数目,函数将输出所找到特征值。接下来是cvCalcOpticalFlowPyrLK 函数, 实现了金字塔中Lucas-Kanade 光流计算的稀疏迭代版本。 它根据给出的前一帧特征点坐标计算当前视频帧上的特征点坐标。输入参数包括跟踪图像的前一帧和当前帧,以及上面函数输出的前一帧图像特征值,自定义的迭代标准,输出所找到的当前帧的特征值点。这些点可以确定面部局部区域的特征 如眼部,鼻子高度与宽度,嘴部两侧与底部的夹角等等,利用与前一帧的特征比较,可得出反应脸部动态变化的参数,这些数据可以与脸部的一些简单表情相关联。下面图4 为跟踪眼睛上下眨动的图像。


图4 跟踪眼部上下眨动图像

4 总结

本文以OpenCV 图像处理库为核心,以QT 库所提供的界面框架为基础,提出了人脸识别系统设计方案,实验证明本方案具有较好的实用性,可移植性。但仍有许多不足之处,如身份与表情识别部分可以通过引入神经网络或支持向量机SVM 进行分类,可以使识别准确率与识别种类数得到提高,这些也是后续工作中步需要改进的。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2025-08-03 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2025-08-03 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2025-08-03 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2025-08-03 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2025-08-03 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭
女性后背疼挂什么科室 公元前是什么意思 皮炎用什么药膏 少许纤维灶是什么意思 胃窦病变意味着什么
大夫古代指什么 炸鱼是什么意思 咳嗽嗓子疼吃什么药 喜鹊叫有什么兆头 神是什么偏旁
霜打的茄子什么意思 什么水果对心脏好 2016年是属什么年 腰脱什么症状 甲亢吃什么盐好
zoom是什么 尿常规白细胞3个加号什么意思 讨厌是什么意思 女生的胸部长什么样 害怕是什么意思
脓血症是什么病严重吗yanzhenzixun.com 梦见缝被子是什么意思hcv9jop5ns4r.cn 男人结扎有什么好处hcv8jop6ns5r.cn 孕妇梦见老鼠是什么意思hcv8jop1ns9r.cn 梦见摘桑葚是什么意思hcv9jop5ns4r.cn
声音沙哑是什么原因hcv9jop3ns8r.cn 天经地义是什么意思xianpinbao.com 牛的尾巴有什么作用hcv8jop2ns3r.cn 口若悬河是指什么生肖hcv8jop4ns2r.cn 为什么硬一会就软了hcv9jop7ns3r.cn
补血吃什么药hcv8jop0ns8r.cn 乌龟下蛋预示着什么hcv9jop4ns8r.cn 腋下痛是什么病hcv7jop5ns6r.cn 幽门螺杆菌什么症状hcv9jop1ns1r.cn 收阴是什么意思hcv9jop4ns2r.cn
腰疼挂什么科hcv9jop3ns2r.cn 流口水吃什么药最好hcv7jop9ns8r.cn 善根是什么意思hcv8jop2ns5r.cn 阴道润滑剂什么牌子好hcv7jop4ns6r.cn 口差念什么hcv9jop3ns0r.cn
百度