在opencv中学习后保存KNN分类器

时间:2012-06-24 11:35:19

标签: opencv

我使用了OpenCV KNN分类器,经过训练后我需要保存分类器才能在测试阶段使用。我发现在OpenCV中没有实现knn.save()。该怎么办?

3 个答案:

答案 0 :(得分:7)

在k-NN中,由于没有训练,因此未执行保存和写入。 火车方法只存储所有样本。 所以没有"模型"如果被感染了,那么除了所有样品之外什么都不能保存。

答案 1 :(得分:2)

在opencv 3.0中,knn-> save(" train.yml")已实现,,,

虽然我无法使用加载功能,但您可以使用FIleStorage轻松地从文件中读取模型,如上所述,在knn中,模型基本上是功能,因此您只需将Mat功能存储到文件中然后加载。

答案 2 :(得分:1)

评论太长了,所以我在这里发帖。 这不是一个完整的解决方案,所以任何知道如何做到这一点的人:请分享更好的答案

我看了,找不到任何直接的实现。但是,我发现了this guy(他的博客上有很多好东西),他们想出了如何阅读these giant sets of trained classifiers,其中包括K最近邻。

您可以使用他的方法为CvKNearest实现写入和读取。

顺便说一句,如果我的弱c ++理解是正确的,saveread已经为您实现,并且实际上只需要实现writeread


例如CvBoost::save

(boost.cpp)CvBoost::save

- > (inner_functions.cpp)CvStatModel::save

- > (boost.cpp)CvBoost::write


以同样的方式添加此功能:

(knearest.cpp)CvBoost::write


抱歉,我找不到更具体的东西。我希望这会有所帮助。