从训练有素的分类器中获取结果 - 图像处理

时间:2016-02-04 12:47:33

标签: python image opencv image-processing machine-learning

我正在使用OpenCV编码的图像进行性别检测项目。蟒蛇。

我找到了this博文和this opencv教程。在这些网站中,他们建议使用fisherfaces方法和NearestNeighbor算法来制作性别分类模型。

这是我的问题:

我是机器学习的新手,所以在这个分类部分之后,我无法找到如何将另一个图像应用于此分类器并采用这样的结果形式:

"This person is Male."
"This person is Female."

如何从分类器中获取上述结果?

1 个答案:

答案 0 :(得分:2)

使用参考数据教授分类器。你给他每个班级(训练)的例子。让我们说500张女孩照片和500张照片。您告诉分类器每张图片的性别。然后你给分类器一个未知的图像,他将使用训练有素的知识"选择一个班级(如果可能的话)。

仔细阅读OpenCV演示代码。你需要的一切都在那里。

从第100行开始:

Mat testSample = images[images.size() - 1];
int testLabel = labels[labels.size() - 1];
images.pop_back();
labels.pop_back();
// The following lines create an Fisherfaces model for
// face recognition and train it with the images and
// labels read from the given CSV file.
// If you just want to keep 10 Fisherfaces, then call
// the factory method like this:
//
//      cv::createFisherFaceRecognizer(10);
//
// However it is not useful to discard Fisherfaces! Please
// always try to use _all_ available Fisherfaces for
// classification.
//
// If you want to create a FaceRecognizer with a
// confidence threshold (e.g. 123.0) and use _all_
// Fisherfaces, then call it with:
//
//      cv::createFisherFaceRecognizer(0, 123.0);
//
Ptr<FaceRecognizer> model = createFisherFaceRecognizer();
model->train(images, labels);
// The following line predicts the label of a given
// test image:
int predictedLabel = model->predict(testSample);

因为他们使用CSV文件加载图像和标签。然后只是为了演示目的,他们从矢量中取出最后一个图像,将其从矢量中移除并将其用作测试中的图像。 (因此,被测图像不会成为训练数据之一)。然后他们使用剩余的图像训练Fisher事物并将其应用于图像&#34; testSample&#34;

所以你需要做的就是用你的一个图像替换testSample,并根据找到的标签打印出一个句子。