2016-07-30 25 views
1

Ich verwende den folgenden Code ein opencv SVM zu trainieren:OpenCV SVM "unsupported Antworttyp" error

cv::SVMParams params; 
cv::SVM svm; 

params.svm_type = cv::SVM::C_SVC; 
params.kernel_type = cv::SVM::LINEAR; 
params.term_crit = cv::TermCriteria(CV_TERMCRIT_ITER, 100, 1e-6); 

svm.train(trainData, trainLabels, cv::Mat(), cv::Mat(), this->params); 

wo trainData ist:

std::vector<std::vector<float>> data; 
// Do stuff and fill data vector 

cv::Mat trainData(data.size(), data.at(0).size(), CV_32FC1); 

for (int i = 0; i < data.size(); ++i) 
    for (int j = 0; j < data.at(0).size(); ++j) 
     trainData.at<float>(i, j) = data.at(i).at(j); 

und trainLabels ist:

std::vector<unsigned> labels; 
// Do stuff and fill labels 

cv::Mat(labels); 

aber ich habe diesen Fehler:

C:\builds\2_4_PackSlave-win32-vc12-shared\opencv\modules\ml\src\inner_functions.cpp:675:error: (-210) Unsupported response type in function cvPreprocessCategoricalResponses

die ich noch nie zuvor gesehen habe und nicht finden konnte, als ich suchte.

+0

Fragen Sie, was es ist oder warum es da ist, oder wie reparieren Sie es? –

+0

@VeniVidiVici Ich schätze, alle von ihnen, aber jede Hilfe wird geschätzt. – DimChtz

+0

Wo ist die Funktion 'cvPreprocessCategoricalResponses'? –

Antwort

0

Okay, das Problem war eigentlich sehr einfach. cv::SVM unterstützt einfach nicht unsigned int Typ für Etiketten, änderte es zu int und es funktioniert perfekt.