[英]Object Serialization in C++ for storing the OpenCV's SVM object [OpenCV 3.1.0]
因此,众所周知,由于OpenCV中的错误,当您在保存非线性内核SVM之后尝试加载它时,会出现错误。
有关更多信息,请参见此处: OpenCV 3.1.0:保存和加载经过培训的SVM
人们已经加载了SVM,但无法获得相同的结果(加载后分类器数据已损坏)。 我尝试通过编写自己的svmloader函数进行测试。
Ptr<SVM> svmloader(const String& filepath)
{
FileStorage fs;
fs.open(filepath, FileStorage::READ);
Ptr<SVM> svm = Algorithm::read<SVM>(fs.getFirstTopLevelNode());
return svm;
}
这行得通,但我现在可以确认我已经在加载之前和之后测试过模型,并且加载后结果似乎更糟。 那就是在训练一个分类器并对其进行测试之后,它会很好,但是如果您保存它并再次加载它将会被淘汰。
所以我想我想使用C ++的对象序列化来解决这个问题。 如何将任意对象写入文件,然后从该文件读取?
也有人可以确认上述错误是否已在OpenCV 3.2.0中修复,但我无法在发布说明中找到任何内容
任何帮助都是非常感谢的人
https://github.com/opencv/opencv/blob/master/modules/ml/src/svm.cpp#L1611
您会发现每次调用cv :: ml :: SVM :: trainAuto或cv :: ml :: SVM :: train()时都会调用clear()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.