【问题标题】:what is component mask in train CvNormalBayesClassifier opencv?训练 CvNormalBayesClassifier opencv 中的组件掩码是什么?
【发布时间】:2014-08-17 20:33:22
【问题描述】:

我正在使用普通贝叶斯分类器训练 SIFT BOW 描述符。我的训练数据有 79 行,每行代表一个样本和 500 列。响应数据有 79 行和 1 列。 varIdx 和 sampleIdx 为 0 且 update=true。

 CvNormalBayesClassifier 分类器=新 CvNormalBayesClassifier();

         CvMat val1 =cvCreateMat(1,1,CV_8U);
         双[] myarr1=新双[1];
         myarr1[0]=0.0;
         val1.put(myarr1);
         CvMat val2 =cvCreateMat(1,1,CV_8U);
         双[] myarr2=新双[1];
         myarr2[0]=0.0;
         val2.put(myarr2);

         分类器.train(训练数据,标签,val1,val2,真);

错误:

OpenCV 错误:输入参数的大小不匹配(组件掩码应包含与输入变量总数一样多的元素)在 cvPreprocessIndexArray,文件 ..\..\..\..\opencv\modules\ml\src\ inner_functions.cpp,第 426 行 线程“main”中的异常 java.lang.RuntimeException: ..\..\..\..\opencv\modules\ml\src\inner_functions.cpp:426: error: (-209) 组件掩码应该包含尽可能多的元素作为函数 cvPreprocessIndexArray 中输入变量的总数 在 com.googlecode.javacv.cpp.opencv_ml$CvNormalBayesClassifier.train(本机方法) 在 com.cis.project.Recognition.main(Recognition.java:74)

什么是组件掩码?

【问题讨论】:

  • 不知道 javacv (为什么你不使用 opencv 自己的 java 绑定?)但是你要么必须为 varidx 和 sampleidx 传递一个 empty Mat ,或者一个具有相同的形状作为标签。 (另外,使用 svm 可能会得到更好的结果)
  • 对于使用 opencv 的 svm,即 CvSVM 也同样的错误。这个组件掩码是什么错误?
  • 从 StatModel 继承的 所有 类将出现相同的错误。

标签: java c++ opencv javacv


【解决方案1】:

来自docs

许多机器学习模型可以在选定的特征子集和/或在训练集的选定样本子集上进行训练。为了方便您,方法 train 通常包含 var_idx 和 sample_idx 参数。前一个参数标识感兴趣的变量(特征),后一个参数标识感兴趣的样本。两个向量都是整数 (CV_32SC1) 向量(从 0 开始的索引列表)或活动变量/样本的 8 位 (CV_8UC1) 掩码。您可以传递 NULL 指针而不是任何一个参数,这意味着所有变量/样本都用于训练。

所以,要么传递一个 1d 整数或与标签/样本长度相同的 uchar Mat,填充 0 和 1 用作掩码,要么传递一个空对象(或空指针,具体取决于您的 api )。

【讨论】:

  • 如果我使用的是空对象,那么它给我的错误是:OpenCV 错误:cvPreprocessIndexArray 中的参数错误(无效索引数组),文件 ..\..\..\..\opencv\ modules\ml\src\inner_functions.cpp,线程“主”java.lang.RuntimeException 中的第 406 行异常:..\..\..\..\opencv\modules\ml\src\inner_functions.cpp:406:错误:(-5) com.cis.project.Recognition.main(Recognition.java:96) 的 com.googlecode.javacv.cpp.opencv_ml$CvSVM.train(Native Method) 的函数 cvPreprocessIndexArray 中的索引数组无效
猜你喜欢
  • 2012-10-26
  • 1970-01-01
  • 2013-03-30
  • 2020-10-19
  • 2016-06-27
  • 2015-05-04
  • 2015-07-25
  • 2021-06-11
  • 1970-01-01
相关资源
最近更新 更多