computer-vision - C++ 人脸检测/识别实现

标签 computer-vision face-detection

我原以为谷歌可以回答这个问题,但我运气不佳。

有谁知道除 Viola-Jones(增强类 Haar 特征的级联)方法之外的任何人脸检测算法的任何开源 C++ 实现?

另外,是否存在任何地方的 Fisherfaces 的开源 C++ 实现?

谢谢。

最佳答案

这篇文章引起了一些关注,所以我想更新它。在撰写本文时,我已经向 OpenCV 贡献了我编写的人脸识别库,其中包括 Eigenfaces、Fisherfaces 和 Local Binary Patterns Histograms。所以 OpenCV 2.4.2 现在附带了所有开始使用的东西,请参阅非常详细的文档:

  • http://docs.opencv.org/trunk/modules/contrib/doc/facerec/

  • 现在是原来的答案。

    我是凯文帖子中链接的文章的作者。请注意,您需要为 Fisherfaces 找到非对称矩阵 S_{W}^{-1} S_{B} 的特征值,我没有在我的博客中明确提到它。 OpenCV 在其当前版本中只有一个对称矩阵求解器;由于特征值和奇异值对于非对称矩阵并不等效,因此您也不能使用 SVD。对于我的项目,我已将 JAMA 求解器调整为 C++ 以解决非对称矩阵的特征值问题,因此无需为此使用外部库。 CMakeLists.txt 已配置,因此也可以使用 Eigen,因此您可以选择。

    现在我终于找到了一些时间来使用 OpenCV2 C++ API 实现 Fisherfaces method 并将代码推送到我的 github 帐户:
  • https://github.com/bytefish/opencv/blob/master/lda

  • main.cpp 向您展示了如何使用 Fisherfaces class 以及如何使用与上相同的示例: http://www.bytefish.de/wiki/pca_lda_with_gnu_octave 使用线性判别分析。它是一个 CMake 项目,所以编译就像输入一样简单:
    philipp@mango:~/some/dir$ mkdir build; cd build
    philipp@mango:~/some/dir/build$ cmake ..
    philipp@mango:~/some/dir/build$ make
    philipp@mango:~/some/dir/build$ ./lda
    

    我不知道这是否是在答案中发布代码的首选 Stackoverflow 方式,但我认为发布时间太长了。

    请注意两点。 (1) 我从 CSV 文件 ( just like this one ) 中读取图像,您不必关心标签的顺序。 (2) 我按列存储特征向量,而 OpenCV 中的 PCA 按行存储它们。这样做只是个人品味的问题,但我从未见过任何其他求解器的情况,因此我决定按列存储它们。

    关于computer-vision - C++ 人脸检测/识别实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7574623/

    相关文章:

    android - 使用 android 设备进行无标记检测的最适合检测图像的方法是什么?

    python - 多尺度模板匹配不正确

    c++ - Opencv C++ 人脸检测代码不起作用

    opencv - 无限循环: Haar, LBP,opencv的HOG traincascade卡住了

    android - 在 Android 设备上使用 CCV

    c# - 如何在 C# 中比较两个图像?

    machine-learning - 在多 channel 图像数据集上训练卷积网络

    python - OpenCV cv2.VideoCapture() 停止读取 RTSP IP 摄像机

    camera - 人脸检测在 Nexus7 4.2 上不起作用

    java和haarcascade人脸和嘴巴检测——嘴当 Nose