Updating OpenCV CvNormalBayesClassifier

Updating OpenCV CvNormalBayesClassifier

本文关键字:CvNormalBayesClassifier OpenCV Updating      更新时间:2023-10-16

我试图使用CvNormalBayesClassifier来训练我的程序来学习皮肤像素颜色。我有一组训练图像和反应图像。反应图像是黑白的,皮肤区域被标记为白色。下面是我的代码

CvNormalBayesClassifier classifier;
for (int i = 0; i < numFiles; i++) {
    string trainFile = "images/" + int2str(i) + ".jpg";
    string responseFile = "images/" + int2str(i) + "_mask.jpg";
    Mat trainData = imread(trainFile, 1);
    Mat responseData = imread(responseFile, CV_LOAD_IMAGE_GRAYSCALE);
    trainData = trainData.reshape(1, trainData.rows * trainData.cols);
    responseData = responseData.reshape(0, responseData.rows * responseData.cols);
    trainData.convertTo(trainData, CV_32FC1);
    responseData.convertTo(responseData, CV_32FC1);
    classifier.train(trainData, responseData, Mat(), Mat(), i != 0);
}

但是,它给出了以下错误,

The function/feature is not implemented (In the current implementation the new training data must have absolutely the same set of class labels as used in the original training data) in CvNormalBayesClassifier::train

许多谢谢。

正如错误消息所述,您无法根据新的类标签'更新'分类器。正态贝叶斯分类器学习混合高斯分布来表示训练数据。如果你突然开始添加新的标签,这个混合模型将不再是正确的,一个新的模型必须从头开始学习。

好的,我发现问题是黑白图像被压缩了,因此包含0-255的值。因此,在其他图像中可以有一个新的类标签。

要解决这个问题,使用阈值使值all变为0或255。

相关文章:
  • 没有找到相关文章