使用opencv进行人脸识别

时间:2011-04-08 15:28:05

标签: image opencv image-processing video computer-vision

我正在使用OpenCV库在C ++中进行图像处理,这是我的问题:你能否通过比较框架认为可以进行面部识别(根据照片数据库说出一个人的名字)使用图像直方图比较技术在数据库中使用摄像机拍摄图像? (请注意,我只使用opecv库中包含的示例比较图像的面部区域。)

我问这个是因为我刚尝试做上面的程序,但我遇到了很多问题(通常我会发现错误的人)

4 个答案:

答案 0 :(得分:7)

您可能希望从编译Face Detection using OpenCV示例开始。正如其他人所指出的,一般的面部识别并不是一个容易解决的问题。 EigenFaces是一种常见的人脸识别技术,相当容易理解和实施。

正如其他人所说,这是一个难题,但这给你一个开始的地方。

答案 1 :(得分:7)

我遇到过的一些方法是

专门用于此任务的数据集和基准是labeled faces in the wild。您可以找到有关检测后比较面部的工作方法的参考。

<强>更新
我有一个关于面部聚类的实验的描述:无监督的面部识别。 该实验在Section 4.4 of my thesis中描述 基本流程如下

  1. 公制学习:如何确定两个人是否属于同一个人。
    这部分是受监督的,因为它需要输入面部图像,标有每张照片中出现的人的身份。

    一个。检测基准点(眼睛,口角,鼻子)   您可以使用this code或更新版本,例如this one

    湾在检测到的基准点处提取SIFT描述符。

    ℃。构造“面部描述符”:使用单个向量描述每个面 此向量是所有SIFT描述符的 sqrt 的串联。

    d。使用here描述的方法来了解不同人的面部之间的马哈拉诺比斯距离。

  2. 无人监督的面部识别:一旦学会了指标,您就可以使用人的新照片(这些人不需要成为训练集的一部分,你可以使用看不见的人的照片!)。

    一个。重复阶段a-c,为每个输入面构建相同的“面部描述符”向量。

    湾使用学习的马哈拉诺比斯距离比较描述符向量。

答案 2 :(得分:0)

我建议使用现有的算法,例如Luxand FaceSDK中提供的算法:http://www.luxand.com/facesdk/,而不是尝试开发自己的算法。

答案 3 :(得分:0)

现在,opencv中有3种内置识别技术,pca(特征脸),lda(fisherfaces)和lbph。

很好的示例代码: https://github.com/Itseez/opencv/blob/master/samples/cpp/facerec_demo.cpp