4

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

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

此外,任何地方都存在 Fisherfaces 的开源 C++ 实现吗?

谢谢。

4

1 回答 1

14

这篇文章引起了一些关注,所以我想更新它。我已经贡献了我写给 OpenCV 的人脸识别库,其中包括在撰写本文时的特征脸、Fisherfaces 和局部二进制模式直方图。所以 OpenCV 2.4.2 现在提供了一切可以开始的东西,请参阅非常详细的文档:

现在是原始答案。

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

现在我终于找到了一些时间来使用 OpenCV2 C++ API 实现Fisherfaces 方法,并将代码推送到我的 github 帐户中:

main.cpp向您展示了如何使用Fisherfaces 类以及如何使用与以下相同的示例使用线性判别分析: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 文件中读取图像(就像这个),你不必关心标签的顺序。(2) 我按列存储特征向量,而 OpenCV 中的 PCA 按行存储它们。这样做只是个人喜好问题,但我从未见过任何其他求解器,因此我决定按列存储它们。

于 2011-10-23T04:31:09.767 回答