环境是vs2015+opencv3.4 Ptr svm = StatModel::load("SVM_HOG.xml");出现的问题是Error: Parsing error (Missing or invalid SVM type) in cv::ml::SVMImpl::read_
有没有人知道怎么解决呀??
本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。 https://developer.aliyun.com/article/706511 点击链接欢迎加入感兴趣的技术领域群
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到这个问题,通常是因为在加载SVM模型时,XML文件格式不正确或者内容缺失,导致OpenCV无法正确解析SVM的类型。这里有几个可能的解决步骤:
检查XML文件:首先确认SVM_HOG.xml
文件是否完整且未损坏。你可以尝试用文本编辑器打开这个文件,检查是否有明显的错误或不完整的标签。确保文件开头有正确的SVM定义,例如应包含类似<opencv_ml_svm>
的标签。
模型保存方式:确保当初保存SVM模型时使用了正确的保存方法。在OpenCV中,你应该使用如下代码来保存SVM模型:
svm->save("SVM_HOG.xml");
确保你没有误用了其他对象的保存方法。
兼容性问题:虽然不太常见,但有时不同版本的OpenCV之间可能存在兼容性问题。确认你的训练和加载环境使用的OpenCV版本一致,或者至少是兼容的版本。
使用binary格式保存和加载:如果XML格式持续出现问题,可以考虑使用binary格式来保存和加载模型,这通常更稳定且加载速度更快。保存时使用:
svm->save("SVM_HOG.yml");
加载时则使用:
Ptr<SVM> svm = Algorithm::load<SVM>("SVM_HOG.yml");
彻底重建模型:如果上述方法都无法解决问题,可能是模型文件本身已经损坏。此时,最好的办法可能是重新训练并保存你的SVM模型。
如果问题依然存在,建议详细检查你的训练代码以及模型保存和加载的具体环节,确保每一步都按照OpenCV的推荐方式进行。同时,也可以在阿里云开发者社区的相关技术论坛发帖求助,那里有很多经验丰富的开发者可能会提供更具体的帮助。