Image 基于opencv的人脸识别

Image 基于opencv的人脸识别,image,opencv,image-processing,video,computer-vision,Image,Opencv,Image Processing,Video,Computer Vision,我正在使用OpenCV库在C++中进行图像处理,这是我的问题:你认为可以通过使用图像直方图比较技术将摄像机的帧与数据库中的图像进行比较来进行面部识别(根据照片数据库说出人名)吗?(请注意,我使用opecv库中包含的示例仅比较图像的面部区域) 我问这个问题是因为我刚刚尝试过上面的一个程序,但是我有很多问题(通常我检测到了错误的人)您可能想从编译示例开始。正如其他人所指出的,一般的面部识别并不是一个容易解决的问题。是一种很容易理解和实现的常用人脸识别技术 正如其他人所说,这是一个很难解决的问题,但这

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


我问这个问题是因为我刚刚尝试过上面的一个程序,但是我有很多问题(通常我检测到了错误的人)

您可能想从编译示例开始。正如其他人所指出的,一般的面部识别并不是一个容易解决的问题。是一种很容易理解和实现的常用人脸识别技术


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

我建议使用Luxand FaceSDK中提供的现有算法:而不是尝试开发自己的算法。

我曾经使用过的一些方法是

  • 用于比较面
  • :他们使用在每个面的特定教育点计算的SIFT描述符。他们的代码在过去对我来说非常有效
专用于此任务的数据集和基准是。您可以找到对检测后比较面的工作方法的参考

更新:
我描述了一个关于人脸聚类的实验:无监督的人脸识别。 该实验如所述。
基本流程如下

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

    a。检测基准点(眼睛、嘴角、鼻子)。
    您可以使用,或更新的版本,如

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

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

    d。使用描述的方法学习不同人脸之间的马氏距离

  • 无监督人脸识别:一旦了解了度量,您可以使用新的人的新照片(这些人不必是培训集的一部分,您可以使用以前未见过的人的照片!)

    a。重复步骤a-c,为每个输入面构造相同的“面描述符”向量

    b。使用学习的马氏距离比较描述符向量


  • opencv中有3种内置的人脸识别技术:pca(特征脸)、lda(鱼脸)和lbph

    很好的示例代码:

    如果你有办法,请告诉我。你正面临一个极具挑战性的问题。如果摄像机从侧面指向那个人怎么办?还是稍高一点?还是从下面?如果他们戴上眼镜然后摘下来怎么办?etcI我假设相机指向拍摄照片的同一侧。如果它们转过来,图像就不一样了。你能给我一个比较人的脸的好方法吗?不,不是真的,否则我会写一个答案:(你可以尝试使用图像中不同区域的直方图。我还没有在我的程序中使用过这段代码!我的问题不是人脸识别,而是人脸识别的比较。我认为应该使用特征脸概念。使用OpenCV查找帧和照片中人脸的特征值和特征向量数据库中的。如果它们相同,则特征值的相关性应接近1。或者,您可以找到特征向量之间的欧几里德距离-它们应等距。也可以阅读主成分分析(PCA)应该会有帮助。一定要在这里发布你的最终解决方案。一个基于论文的答案!所以你在这个领域做了一些研究。谢谢分享你的发现。@IwanKelaiah谢谢。我希望你会发现它有用。我有一些相关的Matlab代码。