2016-02-29 90 views
0

我在C++中使用OpenCV 3.0.0來訓練Normal Bayes分類器。我訓練了分類器,並將其存儲到一個文件中。現在我正在嘗試使用分類器來預測響應。下面是相關代碼:OpenCV 3.0 NormalBayesClassifier預測錯誤

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

回答

0

錯誤是由於其已被固定在OpenCV的3.1.0中的OpenCV 3.0.0中的錯誤。