错误:'cv::face::FaceRecognizer'中没有名为'getMat'的成员

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

本文关键字:getMat 成员 FaceRecognizer cv face 错误      更新时间:2023-10-16

我正在使用opencv-3.0,从opencv文档中实现这个opencv面部识别演示。

我相信这个演示是使用 opencv-2.4 编写的。但是,我已经将contrib src添加到我的构建中,正如本SO答案中所建议的那样。

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

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完全不兼容?

根据此示例,下一行中的model是指向FaceRecognizer类实例的指针,而不是对象本身。

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

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