1

这是我的代码:

    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 的方式来训练直方图。
请帮助我并给我一些建议。
太感谢了。

4

0 回答 0