• Open Source Computer Vision Library

人脸检测与识别软件包

Wikipedia,自由的百科全书

ARM平台上运行的人脸检测和人脸识别
Enlarge
ARM平台上运行的人脸检测和人脸识别

目录

人脸检测嵌入式算法(ARM, TI DSP)软件包

Haar+AdaBoost是目前最为成熟的人脸检测算法,OpenCV提供的Cascade Classifier为浮点运算,无法在不支持硬件浮点的嵌入式设备上实现实时人脸检测。本人脸检测软件包有如下优点:

定点运算
可在嵌入式设备上实现实时人脸检测(ARM9 400MHz,320x240图像,每秒可处理3-4帧;在TI DSP上通过并行运算,可达到25FPS)。
代码简炼
去除了OpenCV中所有跟人脸检测无关的所有代码,并对代码进行了优化。
API与OpenCV兼容
函数名也为cvHaarDetectObjects,参数基本相同。
级联分类器与OpenCV兼容
软件包提供了API,能自动将OpenCV格式(XML格式)的浮点级联分类器转为定点分类器。
通过使用其他分类器,可以实现人眼检测,侧脸检测等其他物体检测
使用网上的开源分类器(XML文件),或者自己训练的分类器来检测各种物体。

人脸检测API

CvSeq* cvHaarDetectObjects( const CvArr* image,
                     CvHaarClassifierCascade* cascade,
                     CvMemStorage* storage, int scale_factor32x =36,
                     int min_neighbors = 3, int flags = 0,
                     CvSize min_size =cvSize(0,0) );

人脸识别算法软件包

算法原理:采用人脸纹理统计特征对人脸进行识别。

用户可选用PC(浮点)版本或嵌入式(定点)版本
用户可根据自己的需求选择
人眼定位的关键步骤“人眼检测”的分类器已经提交到OpenCV
如果用户仅仅对人眼检测(粗定位)感兴趣,可不必购买软件包,直接下载左眼和右眼的分类器使用OpenCV调用则可:左眼 http://opencvlibrary.svn.sourceforge.net/viewvc/opencvlibrary/trunk/opencv/data/haarcascades/haarcascade_lefteye_2splits.xml 右眼 http://opencvlibrary.svn.sourceforge.net/viewvc/opencvlibrary/trunk/opencv/data/haarcascades/haarcascade_righteye_2splits.xml

人脸识别软件包API

class CFaceRecogn
{
	public:
		/*
		   false: 不在脸上画矩形框
		   true: 在脸上画矩形框
		*/
		bool m_bShowRectOnFace; //default value is false;
 
		/*
		  sDBDir会直接传给LoadFaceDB()函数,此参数的说明请参考LoadFaceDB()函数
		*/
 
		CFaceRecogn(char * sDBDir=NULL);
		~CFaceRecogn();
 
		/*
		  重新从硬盘装载人脸数据,装载前会自动释放上次装载的数据,
		  本函数会在构造函数中调用,所以只有在重新注册了新数据后,才有必要调用此函数
 
		  如果sDBDIR的值为NULL,那么则会使用缺省目录:当前目录下的"facedb"目录;
		  否则从指定人脸库目录下装载数据;
		  支持相对路径和绝对路径。
 
		  ************classifier目录必须跟facedb目录并列,位于同一目录下************  
 
		  返回值是成功装载的人数(非特征样本总数,特征样本数大于人数)
		*/
		int LoadFaceDB(char * sDBDir=NULL);
 
		/*
		  获取当前人脸数据库所在目录
		*/
		const char * GetFaceDBDir();
 
 
 
		/*
		  从pImage里检测人脸的位置,并将此人脸注册,注册的名字为sName
		  如果图像中不存在人脸(或未检测到符合标准的脸),返回值为{0,0,0,0}
		  如果存在>=1副人脸,不注册,切返回值为{-n,-n,-n,-n},n是图像中脸的个数
 
		  pImage: BGR图像,输入
		  sName: 最大长度为128字节,输入
		  sFaceFile: 保存在硬盘上的人脸小图片文件名,为输出变量
		*/
		CvRect DetectRegisterFace(IplImage *pImage, char * sName, char * sOriFaceFile=NULL);
 
		/*
		  从pImage里检测人脸的位置,并识别此人脸,人脸的名字返回到sName中
		  如果图像中不存在人脸(或未检测到符合标准的脸),返回值{0,0,0,0}
		  如果存在>=1副人脸,随机选择一副识别并返回脸的位置
 
		  pImage: BGR image
		  sName: buffer,此变量存储人名。如果图像中无脸,或有脸但无法识别,则返回空字符串
		  返回值:如果有>=1副人脸,则从中选择认识的人脸并返回该脸位置,如果无认识的脸则返回{0,0,0,0}
				  如果没有人脸,则返回{0,0,0,0}
		*/
		CvRect RecognizeFace(IplImage *pImage, char *sName);
 
};

软件包提供方式

本软件包以有偿方式提供。为满足不同用户的需求,软件包以如下三种方式提供。

提供方式 允许拷贝份数 价格 备注
有限使用的二进制库 200,超过200份拷贝需要额外付费 低(约 X万元) 适合产品的前期开发
无限使用的二进制库 无限 中(约 1x万元) 适合在大量产品中使用
全部源代码(C语言) 无限 高(约 XX万元) 拥有无限制复制,并修改源代码的权力。

联系方式

  • 单位:深圳大学计算机与软件学院
  • 联系人email:shiqi.yu (at) szu.edu.cn (请将前面的(at)替换为@)
Views
Personal tools