Jan*_*usz 165 image-processing face-recognition computer-vision
我正在为大学项目寻找一个免费的人脸识别库.我不是在寻找面部检测.我正在寻找实际的认可.这意味着查找包含指定面或库的图像,以计算特定面之间的距离.
我目前正在使用OpenCV来检测面部,并使用粗略的Eigenface算法进行识别.但我认为应该有一些比自编的Eigenface算法更好的性能.我不是在谈论速度和性能,我正在寻找一个比简单的Eigenface方法更好的结果库.
我看了一下Faint,但看起来这个库对我自己的应用程序来说不是很可重用.
我很高兴使用Python,Java,C++,C等类似的库.最好的办法是,如果它可以在Windows机器上运行,因为我现在依赖于一些外部的Windows专用代码.
Pra*_*yan 82
以下是商业供应商列表,这些供应商提供在Windows上运行的面部识别的现成软件包:
Cybula - 面部识别SDK的信息.这是一家由大学教授创立的公司,因此他们的网站看起来不专业.您可以下载没有定价信息或演示.您需要与他们联系以获取价格信息.
NeuroTechnology - 面部识别SDK的信息.该公司既有前期定价信息,也有实际30天的SDK试用版.
匹兹堡模式识别 - (由Google收购)有关其面部跟踪和识别SDK的信息.他们提供的演示可以帮助您评估他们的技术,而不是他们的SDSK.您需要与他们联系以获取价格信息.
byt*_*ish 54
OpenCV 2.4.2现在附带了新的cv :: FaceRecognizer.请参阅以下详细文档:
我发布了libfacerec,一个用于OpenCV C++ API(BSD许可证)的现代人脸识别库.libfacerec没有其他依赖关系,并实现了Eigenfaces方法,Fisherfaces方法和局部二进制模式直方图.该库的部分内容将包含在OpenCV 2.4中.
libfacerec的最新版本可在以下网站获得:
该库是为OpenCV 2.3.1编写的,考虑到即将推出的OpenCV 2.4,因此我不支持早于2.3.1的OpenCV版本.这个项目是一个带有详细记录的API的CMake项目,还有一个关于性别分类的教程.您可以在以下位置查看文档的HTML版本:
如果您想了解这些算法的工作原理,您可能需要阅读我的人脸识别指南(包括Python和GNU Octave/MATLAB示例):
还有一个Python和GNU八度/ MATLAB实现的算法我的github仓库.facerec中的两个项目还包括几种用于评估算法的交叉验证方法:
相关出版物是:
jk.*_*jk. 19
pam-face-authentication用于面部身份验证的PAM模块:但是需要一些工作来获得你想要的东西.快速测试显示,识别率不如NeuroTechnology的VeriLook.
Malic是另一种开源人脸识别软件,它使用Gabor Wavelet描述符.但对源代码的最后更新是3年.
来自网站:" Malic是一款使用gabor小波的开源人脸识别软件.它是基于Malib和CSU人脸识别评估系统(csuFaceIdEval)的实时人脸识别系统.使用Malib库进行实时图像处理,并使用面部csuFaceIdEval认可. "
此外,这可能是有趣的:
gaborboosting:用Gabor小波和AdaBoost算法应用于人脸识别的科学程序
特征提取库 - FELib是指"由Transductive Kernel Fisher判别的面部注释"
你应该看看http://libccv.org/
这是相当新的,但它提供了一个免费的开源高级API用于人脸检测.
(...而且,我敢说,真是太神奇了)
编辑:值得注意的是,这是少数不依赖opencv的lib之一,只是为了踢,这里是文档页面上面部检测代码的副本,让你了解所涉及的内容:
#include <ccv.h>
int main(int argc, char** argv)
{
ccv_dense_matrix_t* image = 0;
ccv_read(argv[1], &image, CCV_IO_GRAY | CCV_IO_ANY_FILE);
ccv_bbf_classifier_cascade_t* cascade = ccv_load_bbf_classifier_cascade(argv[2]); ccv_bbf_params_t params = { .interval = 8, .min_neighbors = 2, .accurate = 1, .flags = 0, .size = ccv_size(24, 24) };
ccv_array_t* faces = ccv_bbf_detect_objects(image, &cascade, 1, params);
int i;
for (i = 0; i < faces->rnum; i++)
{
ccv_comp_t* face = (ccv_comp_t*)ccv_array_get(faces, i);
printf("%d %d %d %d\n", face->rect.x, face->rect.y, face->rect.width, face->rect.y);
}
ccv_array_free(faces);
ccv_bbf_classifier_cascade_free(cascade);
ccv_matrix_free(image);
return 0;
}
Run Code Online (Sandbox Code Playgroud)