2016-04-17 21 views
0

私はOpenCVの3.0を使用していると私はこのコードを試してみましたが、私はこのエラーを取得しています:SVMトレーニングデータエラー

using namespace std; 
using namespace cv; 
using namespace cv::ml; 
int main(int argc, char** argv){ 
int labels[10] = { 0, 0, 1, 1, 0, 1, 1, 1, 1, 0}; 
cv::Mat lablesMat(10, 1, CV_32SC1, labels); 

float trainingData[10][2] = { { 100, 10 }, { 150, 10 }, { 600, 200 }, { 600, 10 }, { 10, 100 }, { 455, 10 }, { 345, 255 }, { 10, 501`z` }, { 401, 255 }, { 30, 150 } }; 

cv::Mat trainDataMat(10, 2, CV_32FC1, trainingData); 
SVM::Params params; 
    params.svmType = SVM::C_SVC; 
    params.kernelType = SVM::LINEAR; 
    params.termCrit = TermCriteria(TermCriteria::MAX_ITER, 100, 1e-6); 
    // Train the SVM 
    Ptr<SVM> svm = StatModel::train<SVM>(trainDataMat, ROW_SAMPLE, lablesMat, params); 
//Create test features 
float testData[2] = { 150, 15 }; 

cv::Mat testDataMat(2, 1, CV_32FC1, testData); 

//Predict the class labele for test data sample 
float predictLable = svm->predict(testDataMat); 

std::cout << "Predicted label :" << predictLable << "\n"; 
    return(0); 
} 

OpenCVのエラー:アサーションは(samples.cols == var_count & & samples.typeを失敗しました()== CV_32F)を返します。 は、 'cv :: Exception'のインスタンスをスローした後に呼び出されて終了します。 what():エラー:(-215)samples.cols == var_count & & samples.type()== CV_32F関数の予測で

+0

可能な重複(http://stackoverflow.com/questions/33897803/opencv-unable-to-set-up-svm-パラメータ) – Miki

+0

私の答えを見てください。 'SVM :: Params'はもう存在しないので、これはOpenCV 3.0でコンパイルされません。 – Miki

+0

いいえ、コンパイルできませんでした。実行時にこの問題が発生しました。 –

答えて

1

問題は、テストベ[SVMパラメータを設定することができないのOpenCV]の1行を有し、2つのCOLS

cv::Mat testDataMat(1, 2, CV_32FC1, testData);