the*_*hil 4 computer-vision face-detection
我以为谷歌可以回答这个问题,但我运气不好.
有没有人知道任何面部检测算法的开源C++实现,而不是Viola-Jones(提升类似哈尔特征的级联)方法?
另外,Fisherfaces的开源C++实现是否存在?
谢谢.
byt*_*ish 14
这篇文章得到了一些关注,所以我想更新它.我贡献了我写给OpenCV的人脸识别库,其中包括Eigenfaces,Fisherfaces和Local Binary Patterns Histograms.所以OpenCV 2.4.2现在有了一切可以入手,请参阅非常详细的文档:
现在原来的答案.
我是Kevin在帖子中链接的文章的作者.请注意,你需要找到Fisherfaces的非对称矩阵S_ {W} ^ { - 1} S_ {B}的特征值,我没有在我的博客中明确提到它.OpenCV只有一个当前版本的对称矩阵求解器; 由于非对称矩阵的特征值和奇异值不相等,因此也不能使用SVD.对于我的项目,我已经将JAMA求解器改编为C++,用于解决非对称矩阵的特征值问题,因此不需要使用外部库.配置了CMakeLists.txt,因此也可以使用Eigen,因此您可以选择.
现在我终于找到了使用OpenCV2 C++ API 实现Fisherfaces方法的一些时间,并将代码推送到我的github帐户:
在main.cpp中展示了如何使用费舍尔类以及如何使用线性判别分析作为同样的例子: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
Run Code Online (Sandbox Code Playgroud)
我不知道它是否是在答案中发布代码的首选Stackoverflow方式,但我认为发布时间太长了.
请注意两件事.(1)我从CSV文件中读取图像(就像这个一样),你不必关心标签的顺序.(2)我按列存储特征向量,而OpenCV中的PCA按行存储它们.这样做只是个人品味的问题,但我从来没有见过任何其他解决方案,所以我决定按列存储它们.