int main(int argc, char *argv[]) { char *configurationFile, *trainingFile, *featuresFile; bool bVerbose; char **args; Classifier classifier; // set defaults configurationFile = NULL; // set using -c <filename> bVerbose = false; // turn on with -v trainingFile = NULL; featuresFile = NULL; // check arguments args = argv + 1; while (argc-- > 2) { if (!strcmp(*args, "-c")) { argc--; args++; if (configurationFile != NULL) { usage(); return -1; } configurationFile = *args; } else if (!strcmp(*args, "-f")) { argc--; args++; featuresFile = *args; } else if (!strcmp(*args, "-k")) { argc--; args++; sscanf(*args, "%i", &(classifier.num_clusters)); printf("Set num_clusters to %d \n", classifier.num_clusters); } else if (!strcmp(*args, "-o")) { argc--; args++; int d; sscanf(*args, "%i", &d); classifier.max_others = d; printf("Set max_others to %d \n", d); } else if (!strcmp(*args, "-lk")) { classifier.kmeans_load = true; } else if (!strcmp(*args, "-sk")) { classifier.kmeans_save = true; } else if (!strcmp(*args, "-b")) { classifier.bayes.on = true; } else if (!strcmp(*args, "-s")) { classifier.svm.on = true; } else if (!strcmp(*args, "-r")) { classifier.rtrees.on = true; } else if (!strcmp(*args, "-t")) { classifier.btrees.on = true; } else if (!strcmp(*args, "--save")) { classifier.save_all = true; } else if (!strcmp(*args, "--load")) { classifier.load_all = true; } else if (!strcmp(*args, "-h")) { usage(); return 0; } else if (!strcmp(*args, "-v")) { bVerbose = !bVerbose; } else { cerr << "ERROR: unrecognized option " << *args << endl; return -1; } args++; } if (argc != 1) { usage(); exit(-1); } cout << endl; // load the training file list TTrainingFileList fileList; fileList = getTrainingFiles(*args, ".jpg"); if (!classifier.extract(fileList)) { cerr << "ERROR: coult not extract features" << endl; exit(-1); } // now train the classifier if (!classifier.train()) { cerr << "ERROR: could not train classifier" << endl; exit(-1); } // // // save classifier configuration // if (configurationFile != NULL) { // if (!classifier.saveState(configurationFile)) { // cerr << "ERROR: could not save classifier configuration" << endl; // exit(-1); // } // } return 0; }