如何在openCV项目中使用LIBSVM生成的模型

时间:2014-03-12 09:10:19

标签: c++ opencv

我是LibSVM和openCV领域的新手,在编码方面遇到了困难。我使用命令提示符生成了LibSVM模型。现在我有文件" myData.model"。现在我想使用这个模型通过openCV预测实例。

您能告诉我如何在openCV项目中调用模型文件以及如何逐个传递实例吗?

根据libSVM自述文件,这应该是:

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

但是我无法理解如何制作svm_node * x?我的实例格式与我为训练模型提取的格式相同,即标签....

请给我示例代码以解决我的问题。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您必须加载模型并创建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