Cara menggunakan model yang dihasilkan oleh LIBSVM dalam proyek openCV

Saya baru di domain LibSVM dan openCV dan menghadapi kesulitan dalam pengkodean dengan benar. Saya telah membuat model LibSVM menggunakan command prompt. Sekarang saya memiliki file "myData.model". Sekarang saya ingin menggunakan model ini untuk memprediksi instance melalui openCV.

Bisakah Anda memberi tahu saya cara memanggil file model di proyek OpenCV dan cara meneruskan instance ke dalamnya satu per satu?

Sesuai readme libSVM, ini seharusnya seperti:

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

Tapi saya tidak mengerti cara membuat svm_node *x? Saya memiliki instance dalam format yang sama seperti yang saya ekstrak untuk model pelatihan yaitu label ....

Tolong beri saya kode contoh untuk menyelesaikan masalah saya.

Terima kasih sebelumnya.


person user3319734    schedule 12.03.2014    source sumber


Jawaban (1)


Anda harus memuat model Anda dan membuat 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];

Anda dapat menemukan contoh lengkapnya di sini:

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

person Sam Felix    schedule 12.03.2014