【问题标题】:Error using svm predict function in openCV when loading a saved file with svm load使用 svm load 加载保存的文件时,在 openCV 中使用 svm predict 函数时出错
【发布时间】:2018-03-12 20:36:16
【问题描述】:

我正在尝试使用 OpenCV 中的 SVM 加载函数加载 .xml 文件,然后使用预测函数对交通标志进行分类。当到达预测函数的执行时,会抛出一个错误:

Unhandled exception at 0x00007FFE88E54008 in LicentaFunctii.exe: Microsoft C++ exception: cv::Exception at memory location 0x00000025658FD0C0.

并在控制台中记录以下消息:

OpenCV Error: Assertion failed (samples.cols == var_count && samples.type()== 5) in cv::ml::SVMImpl::predict, file C:\build\master_winpack-build-win64-
vc14\opencv\modules\ml\src\svm.cpp, line 2005

这是 xml 行中的前 24 行:

<?xml version="1.0"?>
<opencv_storage>
<opencv_ml_svm>
<format>3</format>
<svmType>C_SVC</svmType>
<kernel>
<type>LINEAR</type></kernel>
<C>15.</C>
<term_criteria><epsilon>1.0000000000000000e-02</epsilon>
<iterations>1000</iterations></term_criteria>
<var_count>3600</var_count>
<class_count>7</class_count>
<class_labels type_id="opencv-matrix">
<rows>7</rows>
<cols>1</cols>
<dt>i</dt>
<data>
  0 1 2 3 4 5 6</data></class_labels>
<sv_total>21</sv_total>
<support_vectors>
<_>
  1.06024239e-02 4.48197760e-02 -4.58896300e-03 -2.43553445e-02
  -7.37148002e-02 -1.85971316e-02 -1.32155744e-02 -1.38255786e-02
  -3.20396386e-02 8.21578354e-02 7.99100101e-02 -1.21739525e-02

以下代码用于从xml文件中加载训练好的数据:

Ptr<SVM> svm = SVM::create();
svm->load("Images/trainedImages.xml");

注意:我使用的是 OpenCV 3.4.0 版本。

任何人都可以就这个问题提出建议吗?

编辑 1: 似乎像这样加载经过训练的文件会起作用:

Ptr<SVM> svm = SVM::create();
svm = SVM::load("Images/trainedImages.xml");

【问题讨论】:

  • 嗨@sixfeet!您的解决方案对我有用!您能否将其添加为答案?谢谢你!
  • 嗨@GaneshTata,我已将编辑添加为答案!很高兴这对您有所帮助

标签: opencv svm


【解决方案1】:

似乎像这样加载经过训练的文件会起作用:

Ptr<SVM> svm = SVM::create();
svm = SVM::load("Images/trainedImages.xml");

【讨论】:

    猜你喜欢
    • 2019-09-19
    • 2017-07-18
    • 1970-01-01
    • 2015-12-24
    • 2015-04-20
    • 1970-01-01
    • 2016-09-03
    • 2017-03-06
    • 2010-12-17
    相关资源
    最近更新 更多