Я разрабатываю систему распознавания рукописных символов с использованием OpenCV LibSVM. я извлек 14 признаков для вектора признаков, включая моменты Ху, аффинно-инвариантные моменты, количество углов и т. д. Для каждого символа я использую 5 образцов (для буквы «А», существует 5 типов А). Я знаю, что 5 сэмплов недостаточно, но на данный момент у меня есть только 5 сэмплов для каждого персонажа.
Я использую базовый пример LINEAR SVM из документации opencv. Моя проблема в том, могу ли я использовать этот пример документации как есть для своей цели. Я читал о системах OCR, которые используют многоклассовые SVM. Нужен ли мне такой многоклассовый SVM для моего приложения. Я не понимаю об этом. Пожалуйста, может кто-нибудь объяснить? Вот мой код.
у меня 180 образцов цифр и английских заглавных букв и на один образец приходится 14 признаков.
float labels[180][1] = {1.0, 2.0, 3.0, 4.0, 5.0, ,,,,, -> 180.0};
Mat matlabesls(180,1, CV_32FC1, labels);
Mat mattrainingDataMat(180, 14, CV_32FC1, ifarr_readtrainingdata);
CvSVMParams params;
params.svm_type = CvSVM::C_SVC;
params.kernel_type = CvSVM::LINEAR;
params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, 100, 1e-6);
CvSVM SVM;
SVM.train(mattrainingDataMat,matlabesls,Mat(),Mat(),params);
Mat matinput(1,14,CV_32FC1,ifarr_testarray);
is_recognizedcharacter= SVM.predict(matinput);
return is_recognizedcharacter;