मैं सकारात्मक के एक फ़ोल्डर और JPG प्रारूप में नकारात्मक छवियों का एक और है, और मुझे के आधार पर एक SVM प्रशिक्षित करने के लिए है कि छवियों, मैं निम्नलिखित किया है चाहता हूँ, लेकिन मैं एक त्रुटि प्राप्त:छवियों के एक सेट के आधार पर ओपनसीवी के साथ एक एसवीएम को प्रशिक्षित करने के लिए कैसे?
Mat classes = new Mat();
Mat trainingData = new Mat();
Mat trainingImages = new Mat();
Mat trainingLabels = new Mat();
CvSVM clasificador;
for (File file : new File(path + "positives/").listFiles()) {
Mat img = Highgui.imread(file.getAbsolutePath());
img.reshape(1, 1);
trainingImages.push_back(img);
trainingLabels.push_back(Mat.ones(new Size(1, 1), CvType.CV_32FC1));
}
for (File file : new File(path + "negatives/").listFiles()) {
Mat img = Highgui.imread(file.getAbsolutePath());
img.reshape(1, 1);
trainingImages.push_back(img);
trainingLabels.push_back(Mat.zeros(new Size(1, 1), CvType.CV_32FC1));
}
trainingImages.copyTo(trainingData);
trainingData.convertTo(trainingData, CvType.CV_32FC1);
trainingLabels.copyTo(classes);
CvSVMParams params = new CvSVMParams();
params.set_kernel_type(CvSVM.LINEAR);
clasificador = new CvSVM(trainingData, classes, new Mat(), new Mat(), params);
जब मैं चलाने के लिए प्रयास करें:
OpenCV Error: Bad argument (train data must be floating-point matrix) in cvCheckTrainData, file ..\..\..\src\opencv\modules\ml\src\inner_functions.cpp, line 857
Exception in thread "main" CvException [org.opencv.core.CvException: ..\..\..\src\opencv\modules\ml\src\inner_functions.cpp:857: error: (-5) train data must be floating-point matrix in function cvCheckTrainData
]
at org.opencv.ml.CvSVM.CvSVM_1(Native Method)
at org.opencv.ml.CvSVM.<init>(CvSVM.java:80)
मैं एसवीएम को किसी भी विचार को प्रशिक्षित करने का प्रबंधन नहीं कर सकता? धन्यवाद
मैं segmets मैं पहले से ही प्राप्त के आधार पर प्लेटें वर्गीकृत करने के लिए कोशिश कर रहा हूँ, मेरे कोड इस उदाहरण पर आधारित है: https: // GitHub .com/masteringOpenCV/code/blob/master/Chapter5_NumberPlateRognognition/trainSVM.cpp –
क्या आपने CV_64F का उपयोग करने का प्रयास किया था? और क्या आपने पूरी तरह से सुनिश्चित किया है, सीवीएसवीएम में पारित होने से ठीक पहले 'प्रशिक्षण डेटा' का प्रकार क्या है? – morynicz
धन्यवाद @ morynicz, 'CvType.typeToString (trainingData.type())' सीवी_32 एफसी 3 "वापस आ जाएगा .. उसी त्रुटि के साथ सीवी_64 एफ में कनवर्ट करने की भी कोशिश की गई है –