我使用了OpenCV KNN分类器,经过训练后我需要保存分类器才能在测试阶段使用。我发现在OpenCV中没有实现knn.save()
。该怎么办?
答案 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 ++理解是正确的,save
和read
已经为您实现,并且实际上只需要实现write
和read
例如CvBoost::save
:
(boost.cpp)CvBoost::save
- > (inner_functions.cpp)CvStatModel::save
- > (boost.cpp)CvBoost::write
以同样的方式添加此功能:
(knearest.cpp)CvBoost::write
抱歉,我找不到更具体的东西。我希望这会有所帮助。