我正在为我的工程师学位做一个人脸识别项目,使用 c++ api。我认为 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 中都有其等价物,您只需要执行一些“写入搜索窗口并按 Enter”搜索。而且,还有 c++ 教程来掌握 c++ api。