Как использовать модель, сгенерированную LIBSVM, в проекте openCV

Я новичок в области LibSVM и openCV и сталкиваюсь с трудностями при правильном кодировании. Я создал модель LibSVM с помощью командной строки. Теперь у меня есть файл "myData.model". Теперь я хочу использовать эту модель для прогнозирования экземпляров через openCV.

Не могли бы вы сообщить мне, как вызвать файл модели в проекте openCV и как передать ему экземпляры один за другим?

Согласно readme libSVM, это должно быть так:

 Function: double svm_predict(const struct svm_model *model,
                               const struct svm_node *x);

Но я не могу понять, как сделать svm_node *x? У меня есть экземпляры в том же формате, что и для модели обучения, т.е. метки....

Пожалуйста, дайте мне пример кода для решения моей проблемы.

Заранее спасибо.


person user3319734    schedule 12.03.2014    source источник


Ответы (1)


вам нужно загрузить свою модель и создать svm_node:

struct svm_model *SVMModel;
if ((SVMModel = svm_load_model(MODEL_FILE)) == 0) {
    fprintf(stderr, "Can't load SVM model %s", MODEL_FILE);
    return -2;
}
struct svm_node *svmVec;
svmVec = (struct svm_node *)malloc((dataMat.cols+1)*sizeof(struct svm_node));
double *predictions = new double[dataMat.rows];

Вы можете найти полный пример здесь:

http://kuantinglai.blogspot.co.at/2013/07/using-libsvm-with-opencv-mat.html

person Sam Felix    schedule 12.03.2014