วิธีใช้โมเดลที่สร้างโดย LIBSVM ในโครงการ openCV

ฉันเป็นคนใหม่ในโดเมนของ LibSVM และ openCV และประสบปัญหาในการเขียนโค้ดอย่างถูกต้อง ฉันได้สร้างโมเดล LibSVM โดยใช้พรอมต์คำสั่ง ตอนนี้ฉันมีไฟล์ "myData.model" ตอนนี้ฉันต้องการใช้โมเดลนี้เพื่อทำนายอินสแตนซ์ผ่าน openCV

คุณช่วยกรุณาแจ้งให้เราทราบวิธีเรียกไฟล์โมเดลในโครงการ openCV และวิธีส่งอินสแตนซ์ไปทีละไฟล์ได้อย่างไร

ตาม libSVM readme สิ่งนี้ควรเป็นดังนี้:

 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