error: no member named 'getMat' in 'cv::face::FaceRecognizer'

error: no member named 'getMat' in 'cv::face::FaceRecognizer'

我正在使用 opencv-3.0,从 opencv 文档中实现此 opencv facial recognition demo

我相信这个演示是使用 opencv-2.4 编写的。但是,我已将 contrib src 添加到我的构建中,正如 SO answer.

中所建议的那样

但是,我现在收到以下错误:

error: no member named 'getMat' in 'cv::face::FaceRecognizer'

违规代码是

Mat eigenvalues = model->FaceRecognizer::getMat("eigenvalues");

我正在这样编译我的代码

g++ -o facerec_demo facerec_demo.cpp `pkg-config --cflags --libs opencv`

有没有办法解决这个问题,或者这个演示是否与 opencv-3.0 完全不兼容?

根据this example,下一行中的model是指向FaceRecognizerclass实例的指针,而不是对象本身。

129:    Ptr<FaceRecognizer> model = createEigenFaceRecognizer();
        ...
143:    Mat eigenvalues = model->getMat("eigenvalues");

因此,getMat函数没有在FaceRecognizerclass中定义是有道理的,但应该为Ptr<FaceRecognizer>.

定义