我正在学习基于 C++ 中 OpenCV 的人脸识别的较早教程,但遇到了一个我无法解决的错误。相关代码片段:
#include "opencv2/core/core.hpp"
#include "opencv2/face.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/objdetect/objdetect.hpp"
...
Ptr<face::FaceRecognizer> model = face::createFisherFaceRecognizer();
model->train(images, labels);
...
我的 OpenCV 使用 contrib 模块正确编译,包含它们,但它仍然给出错误:
error: 'createFisherFaceRecognizer()' is not a member of 'cv::face'
我也试试这个:
Ptr<face::FaceRecognizer> model = face::FisherFaceRecognizer_create();
error: 'FisherFaceRecognizer_create()' is not a member of 'cv::face'
我查看了face.hpp,该类有一个函数'create',所以我尝试使用它,但这也失败了:
Ptr<face::FaceRecognizer> model = face::FisherFaceRecognizer.create();
error: expected primary-expression before '.' token
这很奇怪,因为该函数的参数具有默认值。我尝试的所有在线解决方案都失败了。较新的 OpenCV 版本发生了什么变化,如何正确创建人脸识别器对象?