【发布时间】:2018-10-07 04:31:26
【问题描述】:
我正在使用 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");
然后使用temp.xml 启发式,我像这样预测性别:
gendermodel->predict(currMat, predictedLabel, conf);
但是,我使用detectMultiScale() 和"Cascade Classifier" 遇到了this implementation。有什么区别?与我目前使用的方式相比,使用Cascade Classifier 是否有性能优势? detectMultiScale() 比 predict() 更好用吗?
【问题讨论】:
标签: c++ opencv image-processing face-detection face