Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么是序列CvNormalBayesClassifier opencv中的组件掩码?_Java_C++_Opencv_Javacv - Fatal编程技术网

Java 什么是序列CvNormalBayesClassifier opencv中的组件掩码?

Java 什么是序列CvNormalBayesClassifier opencv中的组件掩码?,java,c++,opencv,javacv,Java,C++,Opencv,Javacv,我正在使用普通贝叶斯分类器训练筛弓描述符。我的训练数据有79行,每行代表一个样本和500列。响应数据有79行和1列。 varIdx和sampleIdx为0,update=true CvNormalBayesClassifier classifier=new CvNormalBayesClassifier(); CvMat val1 =cvCreateMat(1,1,CV_8U); double[] myarr1=new double[1];

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

CvNormalBayesClassifier classifier=new CvNormalBayesClassifier(); CvMat val1 =cvCreateMat(1,1,CV_8U); double[] myarr1=new double[1]; myarr1[0]=0.0; val1.put(myarr1); CvMat val2 =cvCreateMat(1,1,CV_8U); double[] myarr2=new double[1]; myarr2[0]=0.0; val2.put(myarr2); classifier.train(trainingdata, label,val1,val2 ,true); CvNormalBayesClassifier分类器=新的CvNormalBayesClassifier(); CvMat val1=cvCreateMat(1,1,CV_8U); double[]myarr1=新的double[1]; myarr1[0]=0.0; val1.put(myarr1); CvMat val2=cvCreateMat(1,1,CV_8U); double[]myarr2=新的double[1]; myarr2[0]=0.0; val2.put(myarr2); 分类器.train(trainingdata,label,val1,val2,true); 错误:

OpenCV Error: Sizes of input arguments do not match (Component mask should contain as many elements as the total number of input variables) in cvPreprocessIndexArray, file ..\..\..\..\opencv\modules\ml\src\inner_functions.cpp, line 426 Exception in thread "main" java.lang.RuntimeException: ..\..\..\..\opencv\modules\ml\src\inner_functions.cpp:426: error: (-209) Component mask should contain as many elements as the total number of input variables in function cvPreprocessIndexArray at com.googlecode.javacv.cpp.opencv_ml$CvNormalBayesClassifier.train(Native Method) at com.cis.project.Recognition.main(Recognition.java:74) OpenCV错误:CVPrepreprocessIndexArray文件中输入参数的大小不匹配(组件掩码应包含与输入变量总数相同的元素),第426行,OpenCV\modules\ml\src\inner_functions.cpp 线程“main”java.lang.RuntimeException中的异常:..\..\..\..\..\opencv\modules\ml\src\inner_函数中的异常。cpp:426:错误:(-209)组件掩码包含的元素应与函数CVPrepreprocessIndexArray中输入变量的总数相同 在com.googlecode.javacv.cpp.opencv_ml$CvNormalBayesClassifier.train(本机方法) 位于com.cis.project.Recognition.main(Recognition.java:74) 什么是组件掩码?

来自:

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


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

不知道javacv(为什么不使用opencv自己的java绑定?),但要么必须为varidx和sampleidx传递空Mat,或与标签具有相同形状的标签。(同样,使用支持向量机可能会得到更好的结果)对于使用opencv的支持向量机,即CvSVM也有相同的错误。这个组件掩码有什么错误?对于从StatModel继承的所有类都是相同的错误。如果我使用的是空对象,那么它会给我以下错误:OpenCV错误:CVPrepreprocessIndexArray中的错误参数(无效的索引数组),文件….\..\OpenCV\modules\ml\src\inner\u functions.cpp,线程“main”中的第406行异常java.lang.RuntimeException:..\..\..\..\..\opencv\modules\ml\src\inner_functions.cpp:406:错误:(-5)com.googlecode.javacv.cpp.opencv_ml$CvSVM.train(本机方法)com.cis.project.Recognition.main(Recognition.java:96)上函数CVPrepreprocessIndexArray中的索引数组无效