【发布时间】:2011-09-27 19:27:53
【问题描述】:
我原以为谷歌可以回答这个问题,但我运气不佳。
除了 Viola-Jones(类 Haar 特征的增强级联)方法之外,有人知道任何人脸检测算法的任何开源 C++ 实现吗?
另外,任何地方都存在 Fisherfaces 的开源 C++ 实现吗?
谢谢。
【问题讨论】:
标签: computer-vision face-detection
我原以为谷歌可以回答这个问题,但我运气不佳。
除了 Viola-Jones(类 Haar 特征的增强级联)方法之外,有人知道任何人脸检测算法的任何开源 C++ 实现吗?
另外,任何地方都存在 Fisherfaces 的开源 C++ 实现吗?
谢谢。
【问题讨论】:
标签: computer-vision face-detection
这篇文章引起了一些关注,所以我想更新它。我已经贡献了我写给 OpenCV 的人脸识别库,其中包括在撰写本文时的特征脸、Fisherfaces 和局部二进制模式直方图。所以 OpenCV 2.4.2 现在已经提供了一切可以开始的东西,请参阅非常详细的文档:
现在是原始答案。
我是 Kevin 帖子中链接的文章的作者。请注意,您需要找到 Fisherfaces 的非对称矩阵 S_{W}^{-1} S_{B} 的特征值,我没有在我的博客中明确提及。 OpenCV 在其当前版本中只有对称矩阵的求解器;由于非对称矩阵的特征值和奇异值不等价,因此您也不能使用 SVD。对于我的项目,我已将 JAMA 求解器改编为 C++,以解决非对称矩阵的特征值问题,因此无需使用外部库。 CMakeLists.txt是配置好的,所以Eigen也可以用,任君选择。
现在我终于找到了一些时间来使用 OpenCV2 C++ API 实现 Fisherfaces method,并将代码推送到我的 github 帐户中:
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
我不知道这是否是在答案中发布代码的首选 * 方式,但我认为发布时间有点太长。
请注意两点。 (1) 我从 CSV 文件 (just like this one) 中读取图像,您不必关心标签的顺序。 (2) 我按列存储特征向量,而 OpenCV 中的 PCA 按行存储它们。这样做只是个人喜好问题,但我从未见过任何其他求解器,因此我决定按列存储它们。
【讨论】: