svm预测总是给我更高的标签价值

时间:2015-01-23 02:08:54

标签: c++ r svm vision lbph-algorithm

这是我的代码:

    int num_files = 2;

    sad = sad.reshape(0, 1);
    happy = happy.reshape(0, 1);

    Mat trainData(num_files, happy.cols, CV_32FC1);
    happy.copyTo(trainData.rowRange(0, 1));
    sad.copyTo(trainData.rowRange(1, 2));

    trainData.convertTo(trainData,CV_32FC1);

    Mat labelsMat(num_files ,1 ,CV_32FC1);
    labelsMat.rowRange(0, 1).setTo(1);
    labelsMat.rowRange(1, 2).setTo(-1);

    labelsMat.convertTo(labelsMat ,CV_32FC1);

    CvSVMParams params;
    params.svm_type = SVM::C_SVC;
    params.kernel_type = SVM::RBF;
    params.term_crit = TermCriteria(CV_TERMCRIT_ITER, (int)1e7, 1e-6);

    CvSVM svm;
    svm.train(trainData, labelsMat, Mat(), Mat(), params);

    Mat testData = elbp;

    testData =testData.reshape(0,1); 

    testData.convertTo(testData ,CV_32FC1);

    float response = svm.predict(testData);
对不起,我在这里完全是一个小组 在将脸部图像转换为lbp之后,我试图通过svm对快乐和悲伤的脸进行分类 但预测结果始终是较高的标签,如果我标记为高兴1和悲伤-1,它一直给我1,但如果我标记为快乐1和悲伤2,则给出我的2。 我猜标签或参数有一些问题,或者我需要改变训练lbp训练直方图的方式。
请帮帮我,给我一些建议 非常感谢你。

0 个答案:

没有答案