基于OpenCV的人脸检测算法研究

合集下载

基于OpenCV的人脸识别算法研究与实现

基于OpenCV的人脸识别算法研究与实现

分类号:密级:学校代码:10414 学号:2012160032硕士研究生学位论文基于OpenCV的人脸识别算法研究与实现Research and implementation of facerecognition algorithm based on OpenCV钟官长院所:江西师范大学导师姓名:曾纪国学位类别:工程硕士专业领域:软件工程二0一五年五月独创性声明本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。

据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得或其他教育机构的学位或证书而使用过的材料。

与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。

学位论文作者签名:签字日期:年月日学位论文版权使用授权书本学位论文作者完全了解江西师范大学研究生院有关保留、使用学位论文的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。

本人授权江西师范大学研究生院可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。

(保密的学位论文在解密后适用本授权书)学位论文作者签名:导师签名:摘要人脸识别作为一项安全性很高的生物识别技术,近些年来,它的发展速度非常快,并且逐渐成为生物识别的重要方法。

OpenCV是一个开源的跨平台计算机视觉库,它包含了很多通用的图像处理算法,并且开放源码,OpenCV具有很好的移植性,代码都经过优化,因此可用于科研也可用于商业用途。

本文基于OpenCV分别进行了人脸检测和人脸识别的实验。

针对人脸检测,通过实验验证了几种有效的图像预处理方法。

人脸检测算法是基于AdaBoost 方法的,AdaBoost方法引入了“积分图”的概念,这能有效的提高了算法效率。

针对人脸识别,介绍了几种传统的人脸识别方法,讨论了基于特征脸的人脸识别算法的设计,这种方法主要是通过对人的正脸进行二维矩阵描述,并将其投影到一个已经训练好的特征空间中,识别时只需要比较已知的人脸权值即可,这种方法计算速度快,容易发展成商业技术。

基于opencv的人脸识别开题报告

基于opencv的人脸识别开题报告

基于opencv的人脸识别开题报告一、选题背景随着人工智能技术的不断发展,人脸识别技术逐渐成为了热门研究领域。

人脸识别技术可以应用于安全监控、人脸支付、人脸解锁等多个领域,具有广阔的应用前景。

而OpenCV作为一个开源的计算机视觉库,提供了丰富的图像处理和分析工具,被广泛应用于人脸识别领域。

本文将基于OpenCV,探讨人脸识别技术的实现原理和应用。

二、研究目的本研究旨在通过OpenCV实现人脸识别技术,探索其在实际应用中的可行性和效果。

具体目标如下:1. 研究OpenCV中人脸识别的基本原理和算法;2. 实现基于OpenCV的人脸检测和识别功能;3. 评估所实现的人脸识别系统的准确性和稳定性;4. 探讨人脸识别技术在安全监控、人脸支付等领域的应用前景。

三、研究内容和方法1. 研究内容本研究将主要包括以下内容:(1)OpenCV中人脸识别的基本原理和算法研究:了解OpenCV中人脸识别的基本原理,包括人脸检测、特征提取和匹配等关键步骤。

(2)基于OpenCV的人脸检测和识别功能实现:利用OpenCV提供的函数和工具,实现人脸检测和识别功能,并进行算法优化和性能测试。

(3)人脸识别系统的准确性和稳定性评估:通过对已知人脸数据集的测试,评估所实现的人脸识别系统的准确性和稳定性,并进行性能分析和改进。

(4)人脸识别技术的应用前景探讨:结合实际应用场景,探讨人脸识别技术在安全监控、人脸支付等领域的应用前景,提出相应的建议和改进方案。

2. 研究方法本研究将采用以下方法进行实施:(1)文献调研:通过查阅相关文献和资料,了解人脸识别技术的发展历程、基本原理和算法。

(2)编程实现:利用OpenCV提供的函数和工具,使用Python或C++等编程语言,实现人脸检测和识别功能。

(3)数据集准备:收集和整理包含人脸图像的数据集,用于训练和测试人脸识别系统。

(4)系统评估:通过对已知人脸数据集的测试,评估所实现的人脸识别系统的准确性和稳定性,并进行性能分析和改进。

基于opencv的人脸识别毕业设计

基于opencv的人脸识别毕业设计

基于opencv的人脸识别毕业设计一、引言人脸识别技术是一种通过对图像或视频中的人脸进行识别和验证的技术。

随着计算机视觉和深度学习技术的发展,人脸识别技术已被广泛应用于安防监控、人脸支付、智能门禁等领域。

本文将以基于opencv 的人脸识别技术为研究对象,设计一种高效、准确的人脸识别方案,作为毕业设计的主题。

二、背景介绍1. 人脸识别技术发展历程人脸识别技术的发展经历了传统图像处理、特征提取、模式识别等阶段,近年来,随着深度学习技术的成熟,人脸识别技术取得了突破性进展。

基于深度学习的人脸识别算法不仅能够实现高精度的人脸检测和识别,还能适应不同光照、姿态和表情下的人脸识别任务。

2. opencv在人脸识别中的应用opencv是一个开源的计算机视觉库,提供了丰富的图像处理和机器视觉算法库。

opencv的简单易用、跨评台兼容等特性,使其成为人脸识别技术开发中的重要工具。

许多经典的人脸检测、人脸识别算法都有基于opencv的实现。

三、研究内容与目标本文拟以基于opencv的人脸识别技术为研究对象,结合深度学习技术和opencv图像处理算法,设计一种高效、准确的人脸识别方案。

具体研究内容和目标如下:1. 掌握opencv图像处理和人脸识别的基本原理与算法;2. 分析深度学习在人脸识别中的应用,并结合opencv实现深度学习模型;3. 设计并实现一个基于opencv的人脸检测和识别系统;4. 评估所设计系统的准确性、鲁棒性和实时性,并与市面上主流的人脸识别系统进行性能比较。

四、研究方法与流程1. 研究方法本研究将采用文献调研、实验分析和系统设计等方法,通过阅读相关文献,深入了解深度学习和opencv在人脸识别中的应用;结合实际数据集,分析人脸识别算法的性能和特点;基于opencv和深度学习框架,设计实现人脸识别系统,并进行性能评估。

2. 研究流程(1)文献综述:梳理文献,了解人脸识别领域的研究现状和发展趋势;(2)数据准备:收集人脸图像数据集,用于实验分析和算法训练;(3)算法实现:基于opencv和深度学习框架,实现人脸检测和识别算法;(4)系统设计:设计一个基于opencv的人脸识别系统,包括图像预处理、特征提取和匹配识别等模块;(5)性能评估:通过实验评估所设计系统的准确性、鲁棒性和实时性,并与市面上主流的人脸识别系统进行性能比较;(6)撰写毕业设计论文。

基于OpenCV的人脸检测与跟踪

基于OpenCV的人脸检测与跟踪
mau l , u l i akteo jc ai hl ii o c d da dit frdb esmec lr bt cin . n al b t s f l t t c bet syw i c l e n e ee yt a oo s u t s y a o a so r h e l ets u nr h o r o
C m ue n i ei d p lai s o p t E gn r g n A pi t n 计算机工程与应用 r e na c o
基于 Op n V的人脸检测 与跟踪 eC
朱 承 志
ZHU Che g h n zi
湘潭职业技术学院 工学院 , 湖南 湘潭 4 10 112
Co lg f g n e i g Xin tn Vo ai n l n e h i a l g , a g a , n n 41 0 , i a l eo i e r , a g a c t a d T c n c l e En n o a Co l e Xin t n Hu a 1 2 Ch n e 1
T e o v b v - n i n d p o l ms h s p p r c mb n sAd b o t o r s l e a o e me t e r b e ,t i a e o i e a o s,Ca h f a d Kama l r g a g rt m o ms i n l n f t i l on ih b s d o e CV e l ef c e e t n a d ta k n u o ai al n c u ae y h t r a i ed t ci n c i g a t m t l a d a c r t l  ̄ o z a o r c y Ke r s Op n y wo d : e CV; a o s l o i m ; ms it l o i m ; l n f trn ; a ed t ci n a d ta k n Ad b o t g rt a h Ca h f a g rt h Ka ma l i g f c ee t n c i g i e o r

基于opencv和dlib的人脸识别智能考勤系统毕业论文

基于opencv和dlib的人脸识别智能考勤系统毕业论文

基于opencv和dlib的人脸识别智能考勤系统毕业论文引言智能考勤系统在现代管理中起到了重要的作用。

传统的考勤方式存在诸多问题,如易伪造、低效率等。

人脸识别技术作为一种高效准确的生物特征识别技术,被广泛应用于智能考勤系统中,为解决传统考勤方式的问题提供了新的解决方案。

本文将基于opencv和dlib开源库,研究并设计一种基于人脸识别的智能考勤系统。

通过分析人脸特征,建立人脸识别模型,并结合考勤系统的需求,实现对员工的自动识别和考勤管理。

该系统将提高考勤的准确性和效率,减少传统考勤方式所带来的问题。

在本论文中,我们将介绍智能考勤系统的背景和意义,探讨人脸识别在智能考勤中的应用价值。

通过研究和实践,我们希望为智能考勤系统的开发和应用提供有益的参考。

论文结构本论文将分为以下几个部分:引言:介绍智能考勤系统的背景和意义,以及人脸识别在智能考勤中的应用价值。

相关技术综述:综述人脸识别技术和智能考勤系统的相关技术,包括opencv和dlib的基本原理和应用。

智能考勤系统设计:详细介绍基于___和dlib的人脸识别智能考勤系统的设计思路和实现方法。

实验与结果分析:通过实验验证系统的性能和准确性,并对结果进行详细分析和讨论。

总结和展望:总结本论文的研究工作,对智能考勤系统的发展趋势和未来工作进行展望。

通过以上结构的论述,旨在全面介绍基于___和dlib的人脸识别智能考勤系统的设计与应用,为相关研究和实践提供有益的参考。

本章将介绍OpenCV和dlib的基本原理和功能,以及它们在人脸识别领域的应用。

OpenCV(开放源代码计算机视觉库)OpenCV是一种开源的计算机视觉库,它提供了一系列用于处理图像和视频的函数和算法。

OpenCV可以在多个平台上运行,并支持多种编程语言。

在人脸识别中,OpenCV提供了丰富的功能和方法。

它可以用于检测人脸、识别人脸特征、比较人脸相似度等。

OpenCV使用了各种机器研究和图像处理技术,使其成为人脸识别领域的重要工具之一。

opencv人脸识别原理

opencv人脸识别原理

opencv人脸识别原理OpenCV(开源计算机视觉库)是一个广泛使用的计算机视觉库,其中包含了很多用于处理图像和视频的函数和算法。

在OpenCV中,人脸识别是一个重要的应用领域。

其原理主要包括以下几个步骤:1. 图像预处理:首先,将输入的图像转换为灰度图像,这是因为灰度图像只有一个通道,便于加速运算。

然后,可以对图像进行一些预处理操作,如直方图均衡化、高斯滤波等,以提高识别效果。

2. 面部检测:OpenCV使用级联分类器(Cascade Classifier)来进行面部检测。

这是一种基于机器学习的方法,通过训练一个分类器来识别面部特征。

级联分类器是由多个简单特征分类器级联而成,使用Haar特征提取器和Adaboost训练技术来实现。

3. 特征提取:一旦检测到面部区域,OpenCV会使用特征提取算法来提取面部的特征。

这些特征可以是面部区域的几何特征,如眼睛、鼻子、嘴巴的位置和形状等,也可以是纹理特征,如局部二值模式(LBP)、小波变换等。

4. 特征匹配:接下来,OpenCV将使用已知的特征模板与提取到的面部特征进行匹配。

这可以通过比较特征向量之间的距离或使用分类器来完成。

匹配过程将对输入的面部特征与已知的人脸特征进行比对,以确定识别结果。

5. 人脸识别:最后,OpenCV将根据匹配结果进行人脸识别。

如果匹配率达到预设的阈值,则认为是同一个人。

否则,将确定为其他人或无法识别。

总的来说,OpenCV的人脸识别原理是通过面部检测、特征提取和特征匹配等步骤来实现的。

通过这些步骤,OpenCV能够准确地识别并区分不同的人脸。

基于OpenCV的人脸识别系统

基于OpenCV的人脸识别系统

基于OpenCV的人脸识别系统本文针对课题要求,将Visual C++作为开发工具,在开源计算机视觉平台OpenCV上进行大量的研究和测试,所涉及的内容有:视频图像的采集、人脸图像的预处理、数学形态学图像处理、人脸定位和经典的AdaBoosting算法等。

进而为研究人脸识别技术提供参考依据。

标签:识别系统视频识别OpenCV1 研究背景近年来,在安全入口控制、金融贸易等方面,随着应用需求的增长,生物统计识别技术受到社会的普遍关注。

目前,微电子和视觉系统有了新的进展,在一定程度上使得高性能自动识别技术的实现代价不断降低。

而人脸检测是所有的生物识别方法中应用最广泛的技术之一,人脸检测最初来源于人脸识别。

人脸检测的目的是检测一张图像是否有人脸,如果有人脸,就把它从图像背景中分离出来,然后对特征进行人脸识别。

而在视频中的人脸检测在信息处理中,已经成为一项相当难突破的技术,越来越受到计算机视觉界的广泛关注,作为一个有价值课题,已经渗透到各不同领域中。

2 视频识别功能详细设计2.1 本系统的人脸检测算法2.1.1 基于Haar特征的人脸检测算法。

本系统开发过程中使用的人脸检测算法为基于Haar特征的人脸检测算法,Haar特征定义:HAAR 算法是一种基于特征(feature)的算法,而不是基于像素的算法。

利用Haar特征分类器实现人脸识别,其特点主要表现为检测速度快,性能好,实现流程如图1所示:对于每个特定分类器来说,通常情况下用形状、感兴趣区域中的位置以及比例系数来定义其特征。

在浏览了几种经典的人脸检测算法后,回到本系统中使用的人脸检测算法上。

基于Haar特征的人脸检测算法是最近几年被引用较多,较典型的人脸检测算法。

2.1.2 积分图像。

积分图是Haar分类器能够实时检测人脸的保证。

积分图像是数字图像的一种表示方法,对(x,y)点处的像素值,代表所有左上角像素的总和。

其中g(i,j)是原始的图像,i(x,y)是积分图像。

《2024年基于OpenCV的人脸识别系统设计》范文

《2024年基于OpenCV的人脸识别系统设计》范文

《基于OpenCV的人脸识别系统设计》篇一一、引言随着科技的快速发展,人脸识别技术已经成为现代计算机视觉领域的一个重要研究方向。

人脸识别系统能够自动识别和验证人的身份,广泛应用于安全监控、门禁系统、支付验证等众多领域。

本文将详细介绍基于OpenCV的人脸识别系统的设计。

二、系统需求分析1. 功能需求:人脸检测、人脸特征提取、人脸识别比对等。

2. 性能需求:高识别率、实时响应、系统稳定。

3. 环境需求:操作系统兼容性强,设备要求合理。

三、系统设计概述基于OpenCV的人脸识别系统主要包括预处理、特征提取和匹配三个部分。

通过图像处理和机器学习技术,实现人脸检测和识别的功能。

四、系统架构设计1. 数据预处理模块:主要完成图像的输入、格式转换、尺寸调整等操作,以满足后续处理的需球。

同时对图像进行去噪和锐化处理,提高识别的准确性。

2. 人脸检测模块:利用OpenCV中的人脸检测算法(如Haar 级联分类器或深度学习模型)进行人脸检测,确定图像中的人脸位置。

3. 特征提取模块:通过OpenCV的深度学习模型(如OpenCV DNN模块中的卷积神经网络)提取人脸特征,如面部关键点信息等。

4. 人脸比对模块:将提取的特征与数据库中已有人脸特征进行比对,找出相似度最高的匹配结果。

根据设定的阈值,判断是否为同一人。

五、关键技术实现1. 人脸检测算法:采用OpenCV中的人脸检测算法,如Haar 级联分类器或深度学习模型,实现对图像中人脸的快速定位。

2. 特征提取算法:利用OpenCV的深度学习模型(如OpenCV DNN模块中的卷积神经网络)进行特征提取,包括面部关键点信息等。

3. 人脸比对算法:采用相似度算法(如欧氏距离、余弦相似度等)进行人脸比对,找出相似度最高的匹配结果。

六、系统实现与测试1. 系统实现:根据设计架构,逐步实现各模块功能。

采用C++编程语言,利用OpenCV库进行开发。

2. 系统测试:对系统进行严格的测试,包括功能性测试、性能测试和稳定性测试等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第8卷第3期2009年8月 淮阴师范学院学报(自然科学版)JOURNA L OF HUAIYIN TE ACHERS CO LLEGE (NAT URA L SCIE NCE E DITION ) V ol 18N o 13Aug.2009 基于OpenCV 的人脸检测算法研究齐金山(淮阴师范学院计算机科学与技术学院,江苏淮安 223300)摘 要:介绍了一种开放源代码的计算机视觉类库OpenCv ,阐述了该软件的特点及结构,并对其在Visual C ++2005开发环境下的配置作了详细的说明.然后提出了一个基于OpenCv 的人脸检测算法.实验结果表明,该算法具有识别效果、实时性好,检测速度快的特点.关键词:OpenC V ;人脸检测;I pIImage中图分类号:TP391.41 文献标识码:A 文章编号:167126876(2009)0320216205 收稿日期:2009205222 作者简介:齐金山(19772),男,湖南株洲人,讲师,硕士,研究方向为数字图像处理.0 引言人脸的检测是一类具有很大挑战性的问题[1],其主要难点在于:人脸是一类高度非刚性的目标,存在相貌、表情、肤色等差异;人脸上可能会存在一些附属物如眼镜、胡须等;人脸的姿态变化万化,并且可能存在遮挡物;待检测图像性质的差异,比如:待检图像的分辨率、摄录器材的质量等.针对以上难点,各国的科研人员作了很多的研究,每年在国际国内的相关期刊和会议上都有大量的关于人脸检测的论文,如Chellappa 、Zhao 等人分别于1995和2003年发表的两篇人脸识别的综述论文[2,3].人脸检测的算法也很多,Boosting 算法[4]是其中的一种,但Boosting 算法十分复杂.本文提出了基于OpenC V 进行人脸检测将比较容易实现,实验结果表明该算法具有识别效果好、实时性好、检测速度快的特点.1 OpenCv 简介OpenC V (Open S ource C om puter Vision Library )是指Intel 计算机视觉库[5].它由一系列C 函数和少量C ++类构成,实现了图像处理和计算机视觉方面的很多通用算法.OpenC V 主要用于对图像进行一些高级处理,比如说特征检测与跟踪、运动分析、目标分割与识别以及3D 重建等.由于OpenCv 的源代码是完全开放的,而且源代码的编写简洁而高效,特别是其中大部分的函数都已经通过汇编最优化,以使之能高效而充分地利用英特尔系列处理芯片的设计体系,对于Pentium M MX 、Pentium 、Pentium HI 及Pentium 4这些处理器而言,OpenCv 的代码执行效率是非常高的,所以近年来在国外的图像处理相关领域中被广泛地使用,成为一种流行的图像处理软件.111 OpenCv 的特点相对于MAT LAB 等其它常用的图像处理软件来说,OpenCv 有其显著的不可比拟的优点,主要体现在如下几个方面:1)OpenCv 是一个包含了超过300个C 函数的应用编程接口,它不依赖于外部库,既可以独立运行,也可在运行时使用其它外部库.2)高性能:OpenCv 中所有的算法都是基于封装于IP L 的具有很高灵活性的动态数据结构,而且其中有一半以上的函数在设计及汇编时被Intel 公司针对其所生产的处理器优化.3)提供了一些与诸如E iC 、Ch 、MAT LAB 等其它语言或环境的接口,这些接口在其安装完之后位于安装目录opener/interfaces 下.4)开放性:不管对于商业的还是非商业的用途,OpenCv 都是完全免费的,其源代码完全开放,开发者可以对源代码进行修改,将自己设计的新类添加到库中,只要设计符合规范,自己的代码也可以被别人广泛使用.当然OpenCv 的优点并不止这些,使用OpenCv 对开发者来说帮助最大的是:由于OpenCv 的源代码完全开放,所以程序开发者可以仔细地阅读很多关键算法的源代码来理解图像处理中很多算法的原理及整个实现过程,这对于一个程序开发者来说是非常重要的.112 OpenCv 的数据类型以及常用函数OpenCv 包含基础的数据类型和帮助数据类型,基础的数据类型主要包括:图像类的I pIImage ,矩阵类的CvMat ,可变集合类的CvSeq 、CvSet 、CvG raph 以及用于多维柱状图的混合类CvHistogram 等.帮助数据类型主要包括:用于表示二维点坐标的CvP oint ,用于表示图像宽和高的CvSize ,用于表示叠代过程结束条件的CvT ermCriteria ,用于表示图像转换内核的I pIC onvK ernel 和用于表示空间力矩的CvM oments 等.在此仅介绍算法中用到的图像类I pIImage [6].OpenCv 库使用“I pIImagc ”结构体来创建和处理图像,使用此种格式的优点是可以比DI B 格式表示更多的图像性质,而且可以很方便地存取图像中的像素值.I pIImage structure 定义如下: typedef struct I pIImage {int nSize ;//I pIImage 结构的大小 int I D ;//图像头的版本 int nChannels ;//通道数,支持1,2,3,4通道 int alphaChannel ;//alpha 通道数.OpenC V 忽略此项 int depth ;//图像比特深度 char colorM odel[4];//颜色模式 char channelSeq[4];//通道顺序 int dataOrder ;//数据的排列方式 int Origin ;//坐标原点.0代表左上角.1代表左下角 int align ;//OpenC V 忽略此项 int width ;//图像宽度 int height ;//图像高度 struct I pIROI roi ;//指向ROI 结构的指针,不为NU LL 时表示要处理的图像区域 struct I pIImage 3maskROI ;//OpenC V 中指定为NU LL v oid imageId ;//可忽略 struct I pIT ilelnfo 3tilelnfo ;//可忽略 int imageSize ;//图像大小 char 3imageData ;//指向图像数据的指针 int widthStep ;//校准后的行字节数 int BorderM ode[4]://可忽略 int BorderC onst[4];//可忽略 char 3imageData0rigin ;//指向完整的没有校准的图像 }I pIImage ;OpenC V 的函数命名都是以“cv ”开始的,然后是该函数的行为或者作用目标.例如用来创建图像的函数“cvCreateImage ”,载入图像的函数“cv LoadImage ”.OpenC V 是为图像出来及计算机视觉在实际工程中的应用而设计的一个类库,其中所有的函数都由于其在实际应用中所实现的功能而分属不同的类型,主要的函数类型有:1)基本的图像处理与分析函数.这个类型的函数主要用于实现一些基本的图像处理与分析功能,例如,图像平滑函数cvSm ooth 、S obel 算子cvS obel 、Canny 边缘分割函数cvCanny 等.2)结构分析函数.包括轮廓处理函数、几何学函数以及平面细分函数.712第3期齐金山:基于OpenC V 的人脸检测算法研究812淮阴师范学院学报(自然科学版)第8卷3)运动分析与目标跟踪函数.包括用于运动分析与目标跟踪的函数,例如,背景重建函数cvAcc,用光流法或动态轮廓模型实现目标跟踪的函数cvCalcOpticalFlow BM和cvSnakeImage以及卡尔曼滤波函数cvK alman等.4)摄像机标定和3D重建函数.包括用于摄像机标定、姿态估计以及两个摄像机进行3D相似重构的函数.5)G UI与视频处理函数.包括高级图形用户结构HighG UI用以实现对图像的载入、显示及保存等基本操作以及用以实现视频输入输出及处理的函数.根据上述的数据类型以及函数体系,程序开发者可以根据自己所开发应用程序要实现的功能来方便的选择所需的库函数.113 OpenC V在Visual C++2005下的安装与配置由于OpenCv的源代码是用C和C++所编写而且完全开放,因此可以在Visual C++2005环境下很方便地使用OpenCv所提供的库来进行图像处理.具体步骤如下:1)首先到OpenC V的官方网站(http://s /projects/opencvlibrary)下载OpenC V并进行安装,安装过程很简单,只要按照安装向导一步一步进行即可.2)安装结束后运行Micros oft Visual ,选择“项目”→属性,会弹出一个对话框,之后选择“C/C++”→常规→附加包含目录,在附加包含目录中加入下面路径(假设OpenCv安装在目录C:/Pro2 gram Files/OpenC V下):(i)C:/Program Files/0penC V/include(ii)C:/Program Files/OpenC V/otherlibs/highgui3)然后选择“链接器”→常规→附加库目录,在附加库目录中加入如下路径:C:/Program Files/ OpenC V/lib.4)最后选择“链接器”→输入→附加依赖项,加入如下几项:cxcore.lib cv.lib ml.lib highgui.lib cvaux.lib(用空格分隔).经过上述几个步骤的配置后,OpenCv库就已经链接到当前创建的项目中,之后在项目中就可以方便地使用OpenCv所提供的各种图像处理相关库函数来进行图像处理.2 基于OpenCV的人脸检测算法基于OpenC V的人脸检测主要完成3部分功能,即加载分类器、加载待检测图象以及检测并标示[7].本算法使用OpenC V中提供的“haarcascade frontalface alt.xml”文件存储的目标检测分类,用cv Load函数载入后,进行强制类型转换.OpenC V中提供的用于检测图像中目标的函数是cvHaarDetectObjects,该函数使用指针对某目标物体(如人脸)训练的级联分类器在图象中找到包含目标物体的矩形区域,并将这些区域作为一序列的矩形框返回.为简便起见,以下仅列出其一成员函数FaceDetect来实现人脸检测,并用矩形框标识,代码如下:CT Array<CRect>CFaceDetector::FaceDetect(CImage&ImageS ource) {long detected h=0,detected w=0;//[定义检测出的人脸图像的高和宽] CT Matrix<RG B TRIP LE>tem p image=ImageS ource.G et color image();//[获得原图像的彩色图像分量] long height=ImageS ource.G et image height();//[获取高度] long width=ImageS ource.G et image width();//[获取宽度] CvSize size; size.height=height; size.width=width; CvMemStorage3storage=cvCreateMemStorage(0);//[创建一个新的内存存储区,参数为0则采用默认设置] I pIImage 3img =cvCreateImage (size ,IP L DEPTH 8U ,3);//[创建一个I pIImage 图像数据结构进行处理] ImageS ource.G et color image ().ExportT o (img ->imageData );//[导出矩阵内容给I pIImage ] int scale =1; if (cascade )//[分类器不能为空] {CvSeq 3faces =cvHaarDetectObjects (img ,cascade ,storage ,111,2,C V H AAR DO C ANNY PRUNI NG,cvSize (40,40));//[检测函数] CvP oint pt1,pt2;//[人脸矩形的左上点和右下点] POI NT tm ppt1,tm ppt2; if (faces ->total ) detected face.C onstruction (faces ->total );//[给detected face[i ]分配空间,i 必须大于0,则从1开始] for (i =0;i <(faces ?faces ->total :0);i ++) { CvRect 3r =(CvRect 3)cvG etSeqE lem (faces ,i ); pt1.x =r ->x 3scale ; pt2.x =(r ->x +r ->width )3scale ; pt1.y =r ->y 3scale ; pt2.y =(r ->y +r ->height )3scale ; //[将CvP oint 转换成POI NT 类型] tm ppt1.x =pt1.x ; tm ppt1.y =pt1.y ; tm ppt2.x =pt2.x ; tm ppt2.y =pt2.y ; CRect rect (tm ppt1,tm ppt2); cvRectangle (img ,pt1,pt2,C V RG B (255,0,0),3,8,0);//[在img 中画出人脸矩形] //detected face.C onstruction (i +1);//[给detected face[i ]分配空间,i 必须大于0,则从1开始] detected face[i ]=rect ; } } CT Matrix <RG B TRIP LE >colorsrc ;//[建立临时变量进行数据中转] colorsrc.C onstruction (height ,width ); colorsrc.Im portFrom (img ->imageData ); ImageS ource.Im portFrom (colorsrc );//[img ->imagedata 不能做src 的Im portFrom 参数,只能通过矩阵进行中转] colorsrc.Destruction ();//[数据释放] cvReleaseMemStorage (&storage );//[将内存区域清空] cvReleaseImage (&img );//[将临时变量img 释放] return (detectedface );//[返回检测到的人脸]}算法的实验结果如图1,从图中可以看出我们通过调用函数FaceDetect ,可以实现不同角度下的人脸检测.3 结束语Intel 公司开发OpenCv 库,旨在建立一个完全开放的研究机构使其在图像处理及计算机视觉技术中912第3期齐金山:基于OpenC V 的人脸检测算法研究022淮阴师范学院学报(自然科学版)第8卷图1 程序运行范例得到更好的应用,它为用户提供了一整套的图像处理以及图像与模式分析函数,而且这些函数在Intel 的处理器下执行是最优的.另外结合Micros oft DirectX技术OpenCv可以对数字视频进行处理,用于实现人脸检测与识别、运动分析及环境的实时监控等.本文的基于OpenC V的人脸检测算法识别效果好、实时性好、检测速度快,其检测速度不逊于目前公布的最快的算法,它的简单实用性为我们下一步诸如人脸姿态分析以及人脸姿态仿真[8]等的研发打下了坚实的基础.参考文献:[1] 孙宁,邹采荣,赵力.人脸检测综述[J].电路与系统学报,2006,11(6):1012107.[2] 黎松,平西建,丁益洪.开放源代码的计算机视觉类库OpenCv的应用[J].计算机应用与软件,2005,22(8):1342136.[3] 林维训,潘纲,吴朝晖,等.脸部特征定位方法[J].中国图象图形学报,2003,8(8):8472859.[4] Y oshinobu Ebisawa,Y uji Nurikabe.Face P ose Estimation Based on3D Detection of Pupils and N ostrils[A].VECI MS2005IEEEInternational C on ference on Virtual Environments,Human2C om puter Inter faces,and Measurement Systems G iardini Nax os[C],I tay,2005.[5] Mathew ing the lntel OpenC V Library[M].Ebisawa:Pupils and N ostrils,2004.[6] 陈磊.计算机视觉类库OpenC V在VC中的应用[J].微计算机信息,2007,23(4):1692171.[7] 李全彬,孙巧榆,刘锦高,等.复杂背景和光照多变的人脸检测方法[J].计算机工程与应用,2009,45(8):22224.[8] 赵松,潘可,张培仁.型相关分析在人脸姿态估计中的应用[J].小型微型计算机系统,2009,5(5):9832987.According to OpenCV Person F aceExamination the C alculate W ay StudyQI Jin2shan(School of C om puter Science and T echnology,Huaiyin N ormal University,Huaian Jiangsu223300,Chian)Abstract: This text introduced a kind of calculator sense of vision database that opens a s ource code OpenCv and elaborated the characteristics and structure of that s oftware,and as to it’s at Visual C++under2005development environments of the allocation made expatiation,then put forward an according to OpenCv pers on face examination calculate way.The experiment expresses that that calculate way has to identify as a result effective and s olid sex g ood,examination speed quick characteristics.K ey w ords: OpenC V;pers ons face examines;I pIImage[责任编辑:李晓薇]。

相关文档
最新文档