开发者社区 问答 正文

关于svm+hog目标检测的问题 opencv

环境是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 点击链接欢迎加入感兴趣的技术领域群

展开
收起
茶什i 2019-08-28 10:23:00 762 分享 版权
阿里云 AI 助理回答

遇到这个问题,通常是因为在加载SVM模型时,XML文件格式不正确或者内容缺失,导致OpenCV无法正确解析SVM的类型。这里有几个可能的解决步骤:

  1. 检查XML文件:首先确认SVM_HOG.xml文件是否完整且未损坏。你可以尝试用文本编辑器打开这个文件,检查是否有明显的错误或不完整的标签。确保文件开头有正确的SVM定义,例如应包含类似<opencv_ml_svm>的标签。

  2. 模型保存方式:确保当初保存SVM模型时使用了正确的保存方法。在OpenCV中,你应该使用如下代码来保存SVM模型:

    svm->save("SVM_HOG.xml");
    

    确保你没有误用了其他对象的保存方法。

  3. 兼容性问题:虽然不太常见,但有时不同版本的OpenCV之间可能存在兼容性问题。确认你的训练和加载环境使用的OpenCV版本一致,或者至少是兼容的版本。

  4. 使用binary格式保存和加载:如果XML格式持续出现问题,可以考虑使用binary格式来保存和加载模型,这通常更稳定且加载速度更快。保存时使用:

    svm->save("SVM_HOG.yml");
    

    加载时则使用:

    Ptr<SVM> svm = Algorithm::load<SVM>("SVM_HOG.yml");
    
  5. 彻底重建模型:如果上述方法都无法解决问题,可能是模型文件本身已经损坏。此时,最好的办法可能是重新训练并保存你的SVM模型。

如果问题依然存在,建议详细检查你的训练代码以及模型保存和加载的具体环节,确保每一步都按照OpenCV的推荐方式进行。同时,也可以在阿里云开发者社区的相关技术论坛发帖求助,那里有很多经验丰富的开发者可能会提供更具体的帮助。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答