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