人脸检测与识别软件包
Wikipedia,自由的百科全书
目录 |
[编辑]
人脸检测嵌入式算法(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万元) | 拥有无限制复制,并修改源代码的权力。 |
[编辑]
联系方式
- 单位:中科院深圳先进技术研究院(http://www.siat.ac.cn)
- 联系人email:sq.yu (at) siat.ac.cn (请将前面的(at)替换为@)


