openCV3.0保存训练好的SVM模型然后读取出错
jwgui 2017-04-03 04:12:58 首先我保存了训练好的SVM模型,代码如下:
Ptr<SVM> svm;
// Set up SVM's parameters
SVM::Params params;
params.svmType = SVM::C_SVC;
params.kernelType = SVM::CHI2;
params.termCrit = TermCriteria(TermCriteria::MAX_ITER, 100, 1e-6);
svm = StatModel::train<SVM>(trainingDataMat, ROW_SAMPLE, responses, params);
svm->save("SVMModel.xml");
保存结果应该成功的,文件夹中有相应的.xml文件。
然后加载该.xml文件,代码如下:
svm = StatModel::load<SVM>("SVMModel.xml");分步调试显示在该句出错,
出现中断,中断信息为:Unhandled exception at 0x75DBA832 in test1.exe: Microsoft C++ exception: cv::Exception at memory location 0x012EEFE0.
命令行窗口显示信息为:OpenCV Error: Parsing error (Missing of invalid SVM kernel type) in cv::ml::SVMImpl::read_params, file C:\builds\master_PackSlave-win32-vc12-shared\opencv\modules\ml\src\svm.cpp, line 2064
不中断继续运行,仍然是中断提示:Unhandled exception at 0x75DBA832 in test1.exe: Microsoft C++ exception: cv::Exception at memory location 0x012EEF54.
命令行窗口信息:OpenCV Error: Bad argument (Unknown/unsupported kernel type) in cv::ml::SVMImpl::setParams, file C:\builds\master_PackSlave-win32-vc12-shared\opencv\modules\ml\src\svm.cpp, line 1248
一直不理会继续运行,最后得到的分类结果也是错误的,而用保存前的SVM模型得到的结果正确。
有没有遇到类似情况的朋友或者知道如何解决的求告知。我的目的是可以加载训练好的SVM模型直接进行分类识别。
开发环境:VS2013+opencv3