大家好,我在 android 中训练 SVM 算法时遇到了一点问题。这是我的代码
Imgproc.calcHist(list, channels, new Mat(), hist, histSize, ranges);
Imgproc.calcHist(lis, channels, new Mat(), his, histSize, ranges);
// tl.setText(his.toString());
Mat train_data = new Mat(2, 0, CvType.CV_32FC1);
train_data.push_back(hist);
train_data.push_back(his);
Mat train_dat = new Mat(2, 0, CvType.CV_32FC1);
train_dat.put(2, 0, labelArray);
CvSVM svm = new CvSVM();
CvSVMParams params = new CvSVMParams();
params.set_svm_type(CvSVM.C_SVC);
params.set_kernel_type(CvSVM.LINEAR);
params.set_term_crit(new TermCriteria(TermCriteria.EPS, 100, 1e-6));
svm.train_auto(train_data, train_dat, new Mat(), new Mat(), params);
当我运行它时,我收到此类错误
03-15 13:08:30.065: E/cv::error()(381): OpenCV Error: Bad argument (Invalid response array) in cvPreprocessCategoricalResponses, file /home/reports/ci/slave/50-SDK/opencv/modules/ml/src/inner_functions.cpp, line 664
03-15 13:08:30.120: E/AndroidRuntime(381): CvException [org.opencv.core.CvException: /home/reports/ci/slave/50-SDK/opencv/modules/ml/src/inner_functions.cpp:664: error: (-5) Invalid response array in function cvPreprocessCategoricalResponses
03-15 13:08:30.120: E/AndroidRuntime(381): at org.opencv.ml.CvSVM.train_auto_1(Native Method)
03-15 13:08:30.120: E/AndroidRuntime(381): at org.opencv.ml.CvSVM.train_auto(CvSVM.java:395)
我需要你的帮助 pliz.thnx
最佳答案
您正在创建两个具有 2 行和 0 列的垫子,这是非常可疑的。最后 OpenCV 提示传递给 train_auto 的第二个数组的形状不正确。从你所展示的内容来看,这已经是无法说的了。您需要了解传递给 train_auto 的 Mat 的预期形状。
这是一个很好的示例,显示了传递给 train auto 的两个参数的大小应该是多少:
http://docs.opencv.org/doc/tutorials/ml/introduction_to_svm/introduction_to_svm.html
此外,还不清楚是否有充分的理由使用这种奇特的设置(在 Android 中训练 SVM),在您完全理解之前尝试在真实机器中进行编程可能对您有用?我很确定错误在那里会更有帮助。
关于android - 在android中训练SVM算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22422805/