//Gunakan method getData utk membuat training data dan classes //training folder terdapat subfolder sesuai dengan class masing2 //setiap file mempunya nama cnn.pbm dimana c = class {0..99} dan nn = urutan image {00..99} public void getData() { CvMat row = new CvMat(); CvMat data = new CvMat(); string file; int i = 7, j = 0; for (i = 0; i < classes; i++) { for (j = 0; j < train_samples; j++) { if (j < 10) { file = file_path + i.ToString() + "\\" + i.ToString() + "0" + j.ToString() + ".pbm"; } else { file = file_path + i.ToString() + "\\" + i.ToString() + j.ToString() + ".pbm"; } //form.WriteLine("Training..." + file,true,true); src_image = highgui.CvLoadImage(file, highgui.CV_LOAD_IMAGE_GRAYSCALE); if (src_image.ptr == null) { form.WriteLine("Error: Cant load image: " + file + "\n", true, true); } //process file prs_image = p.preprocess(src_image, size, size); //set class label cxcore.CvGetRow(ref trainClasses, ref row, i * train_samples + j); cxcore.CvSet(ref row, cxtypes.cvRealScalar(i)); CvMat row_header = new CvMat(); CvMat row1 = new CvMat(); //set data cxcore.CvGetRow(ref trainData, ref row, i * train_samples + j); img = cxcore.CvCreateImage(new CvSize(size, size), (int)cxtypes.IPL_DEPTH_32F, 1); //convert 8bits image to 32 bits cxcore.CvConvertScale(ref prs_image, ref img, 0.0039215, 0); cxcore.CvGetSubRect(ref img, ref data, new CvRect(0, 0, size, size)); //convert data matrix size x size to vector row1 = cxcore.CvReshape(ref data, ref row_header, 0, 1); cxcore.CvCopy(ref row1, ref row); cxcore.CvReleaseImage(ref src_image); cxcore.CvReleaseImage(ref prs_image); cxcore.CvReleaseImage(ref img); } } }