Разработвам система за разпознаване на ръкописни знаци, използвайки OpenCV LibSVM. Извлякох 14 характеристики за вектора на характеристиките, включително Hu моменти, афинни инвариантни моменти, брой ъгли и т.н. За всеки знак използвам 5 проби (за буква "A", има 5 вида A). Знам, че 5 проби не са достатъчни, но в момента имам само 5 проби за всеки герой.
Използвам основния пример за LINEAR SVM в документацията на opencv. Проблемът ми е, мога ли да използвам този пример за документация такъв, какъвто е, за моята цел. Чел съм за OCR системи, които използват многокласови SVM. Имам ли нужда от такъв Multi-Class 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;