C++ OpenCV predict()与detectMultiScale()的比较

C++ OpenCV predict()与detectMultiScale()的比较,c++,opencv,image-processing,face-detection,face,C++,Opencv,Image Processing,Face Detection,Face,我正在使用OpenCV进行人脸、性别和年龄检测。我有一系列用于训练模型的图像,基本上我目前有以下内容: Ptr<cv::face::FaceRecognizer> model = cv::face::LBPHFaceRecognizer::create(9, 9); std::vector<int> labels; std::vector<std::string> imageFileNames; for (int currImageIndex = 0; cu

我正在使用OpenCV进行人脸、性别和年龄检测。我有一系列用于训练模型的图像,基本上我目前有以下内容:

Ptr<cv::face::FaceRecognizer> model = cv::face::LBPHFaceRecognizer::create(9, 9);
std::vector<int> labels;
std::vector<std::string> imageFileNames;

for (int currImageIndex = 0; currImageIndex < imageFileNames.size(); currImageIndex++)
{
    cv::Mat currMatrix;
    std::string currentFileName = imageFileNames[currImageIndex];
    std::string gender;
    int currID = -1;

    //Save the image and the corresponding ID to the list(s).
    currMatrix = imread(currentFileName , CV_LOAD_IMAGE_GRAYSCALE);
    if (currMatrix.data != NULL)
    {
        images.push_back(currMatrix);
        labels.push_back(currID);
    }
}

model->train(images, labels);
model->write("C:\\temp.xml");
然而,我遇到了使用
detectMultiScale()
“级联分类器”
。区别是什么?与我目前使用的方法相比,使用
级联分类器是否有性能优势?
detectMultiScale()
是否比
predict()
工作得更好?

函数用于对象检测。它返回类型为
std::vector
的变量,该变量包含检测对象的边界矩形


函数用于对象分类。它返回输入图像的类别标签和预测对象的置信度。

是否可以使用detectMultiScale进行某种类型的性别检测,或者FaceRecognitor::predict()是否始终用于分类?@Katianie。。。性别预测是一个分类问题,因此
FaceRecognizer::predict
更适合它。它可以通过
detectMultiScale
实现,但这将非常麻烦,可能不够准确。
gendermodel->predict(currMat, predictedLabel, conf);