【问题标题】:OpenCV 3.0 NormalBayesClassifier predict errorOpenCV 3.0 NormalBayesClassifier 预测错误
【发布时间】:2016-06-12 02:43:37
【问题描述】:

我在 C++ 中使用 OpenCV 3.0.0 来训练正态贝叶斯分类器。我训练了分类器,并将其存储到一个文件中。现在我正在尝试使用分类器来预测响应。以下是相关代码:

Ptr<TrainData> trainingData = TrainData::loadFromCSV(trainingDataFile,0);
std::cout << "Training data has been loaded.\n";
Mat samples = trainingData->getTrainSamples();
Mat correctResponses = trainingData->getTrainResponses();

std::cout << "Loading NB classifier...\n";
Ptr<NormalBayesClassifier> nbClassifier = NormalBayesClassifier::load<NormalBayesClassifier>(trainingDataFile+"_trainedNBParams.dat");
std::cout << "NB classifier loaded.\n";

Mat receivedResponses;
std::cout << "Classifying data using NB classifier...\n";
nbClassifier->predict(samples,receivedResponses); //error here
std::cout << "Classification complete.\n";

我收到以下错误:

OpenCV Error: Null pointer (When the number of input samples is >1, the output vector of results must be passed) in predictProb, file /home/keyur/OpenCV/opencv-3.0.0/modules/ml/src/nbayes.cpp, line 318
terminate called after throwing an instance of 'cv::Exception'
  what():  /home/keyur/OpenCV/opencv-3.0.0/modules/ml/src/nbayes.cpp:318: error: (-27) When the number of input samples is >1, the output vector of results must be passed in function predictProb

我不明白应该如何将输出矩阵传递给函数。文档相当模糊,其他 StackOverflow 答案对这个特定问题没有帮助。

文档链接: http://docs.opencv.org/3.0.0/d4/d8e/classcv_1_1ml_1_1NormalBayesClassifier.html

【问题讨论】:

    标签: c++ opencv machine-learning opencv3.0 naivebayes


    【解决方案1】:

    该错误是由于 OpenCV 3.0.0 中的错误导致的,该错误已在 OpenCV 3.1.0 中修复。

    【讨论】:

      猜你喜欢
      • 2015-03-05
      • 2016-04-16
      • 2015-08-07
      • 2016-12-26
      • 2014-06-14
      • 2016-03-29
      • 2023-03-13
      • 2017-03-22
      • 2016-01-08
      相关资源
      最近更新 更多