如果你是从谷歌后来的恭喜你 来对地方了
人脸识别的东西,但那个代码是opencv2.4的,所以直接搬那个文章的代码到opencv3.3会有很多问题,网上的那篇文章的代码会出现一些问题,比如它有如下语句:
Mat eigenvalues = model->getMat("eigenvalues");
Mat W = model->getMat("eigenvectors");
Mat mean = model->getMat("mean");
编译的时候会报错faceRecognize没有成员函数getMat,还有未定义标识符
解决方法:
1 添加
#include "opencv2/face.hpp"
using namespace cv::face;
2修改
將 Ptr<FaceRecognizer> model = FaceRecognizer::create();
改为
Ptr<EigenFaceRecognizer> model = EigenFaceRecognizer::create();
將`Mat eigenvalues = model->getMat(“eigenvalues”);
Mat W = model->getMat(“eigenvectors”);
Mat mean = model->getMat(“mean”);
改为
Mat eigenvalues = model->getEigenValues();
Mat W = model->getEigenVectors();
Mat mean = model->getMean();
原因
opencv3里面的用法和opencv2不同了,在这里面contrib.hpp被换成了face.hpp而且加上了名称空间cv;;face,getMat也被其他方法取代,总之整体没有什么差别,思路还是一样,只是表达方式变了。
注:本博客仅限于opencv3.3.0,如修改后不成功,其他版本opencv的请参考下方的官方案例,选择对应的版本进行比较修改
https://docs.opencv.org/3.3.0/da/d60/tutorial_face_main.html
参考:https://blog.csdn.net/Aowuyuyu/article/details/76086052
https://docs.opencv.org/3.3.0/da/d60/tutorial_face_main.html