我正在尝试用OpenCV做一些人脸识别(而不是检测)的事情。我找到了这篇文章,里面有一些代码:
http://www.cognotics.com/opencv/servo_2007_series/index.html
但是,这段代码是使用旧的C风格的OpenCV应用编程接口编写的。有人有使用OpenCV 2.3.1等更新版本的C++应用程序接口版本吗?
发布于 2011-10-31 18:47:48
我正在为我的工程师学位做一个人脸识别项目,使用的是c++应用程序接口。我认为在c++中关于人脸识别的所有事情都相当简单,甚至比C更简单(指针更少)。要使用PCA,你需要一个名为PCA的类来描述here。只需使用适当的方法,并理解阅读文档即可。为了使用输入数据构建矩阵,我创建了一个大小合适的矩阵,然后将图片作为行(使用方法reshape)粘贴到其中( cv::Mat中有一个方法可以让您轻松获得矩阵的一行)。您只需确保基础数据和测试数据具有相同的参数(通道、大小等)。
编辑:
using namespace cv; //somewhere near top将数据插入数据矩阵:
62 Mat reshaped=img.reshape(1,1);
63 Mat dataRow=_data.row(y++);
64 resize(reshaped,dataRow,dataRow.size(),0,0,CV_INTER_LINEAR);计算pca:
251 _pca(_data,Mat(),CV_PCA_DATA_AS_ROW); //compute pca
252 _pca.project(_data,_vectors); // project original data to new coordinates由于opencv的文档并不是最好的,所以花一些时间阅读它并不会有什么坏处。大多数c api函数在c++ api中都有等价物,您只需执行一些“写入搜索窗口并按回车键”的搜索。此外,还有一些c++教程可以帮助您掌握c++应用编程接口。
发布于 2012-04-08 03:51:18
更新:OpenCV 2.4.2现在带有非常新的cv::FaceRecognizer。请参阅以下网址中非常详细的文档:
我发布了libfacerec,这是一个用于OpenCV C++应用程序接口(BSD license)的现代人脸识别库。libfacerec没有额外的依赖关系,它实现了特征面方法、鱼子面方法和局部二进制模式直方图。该库的部分内容将包含在OpenCV 2.4中。
libfacerec的最新版本可在以下位置获得:
该库是为OpenCV 2.3.1编写的,考虑到了即将推出的OpenCV 2.4,因此我不支持2.3.1之前的OpenCV版本。这个项目是一个CMake项目,有很好的文档说明,还有一个关于性别分类的教程。您可以在以下位置查看该文档的HTML版本:
如果你想了解这些算法是如何工作的,你可能想要阅读我的人脸识别指南(包括Python和GNU Octave/MATLAB示例):
有关的刊物包括:
https://stackoverflow.com/questions/7949494
复制相似问题