def main(args): image = cv.LoadImage( args.input_image) featuremap = FeatureMap() featuremap.read_from_file( args.input_features ) classifier = load_classifier_from_file( args.classifier ) if not classifier.is_trained(): print "Warning: using an untrained classifier. This will probably break." label_set = LabelSet() label_set.read_from_file( args.label_set ) window = ClickWindow( image, args.zoom_out) while(True): cont = update_all_windows() if not cont: break if window.update_label: click_pt = window.click_pt closest_pt = min( featuremap.get_feature_points(), key = lambda pt: l2_dist(pt,click_pt) ) feature = featuremap.get_feature( closest_pt ) shape = featuremap.get_shape( closest_pt ) size = featuremap.get_size( closest_pt ) label = classifier.predict_label( feature ) label_name = "None" if label==0 else label_set.get_label_name(label) label_color = cv.RGB(0,0,0) if label==0 else label_set.get_label_color(label) print "Predicted label: %d (%s)"%(label, label_name); window.set_patch( closest_pt, shape, size, label_color ) window.update_label = False
def main(args): if not (args.input_classifier or args.classifier_type): print "Must specify input classifier or type!" return 1 if args.input_classifier: args.classifier_type = get_classifier_name(args.input_classifier) output_file = args.input_classifier else: if args.output_directory: directory = args.output_directory else: directory = os.path.dirname(args.input_features) print "No output directory specified. Defaulting to %s" % directory if not os.path.exists(directory): os.makedirs(directory) if args.output_prefix: prefix = args.output_prefix else: prefix, extension = os.path.splitext( os.path.basename(args.input_features)) print "No output prefix selected. Defaulting to %s" % prefix output_file = "%s/%s.cls" % (directory, prefix) if args.classifier_type in CPP_CLASSIFIERS: call_cpp(args) return #Now onto just the python implementation if args.input_classifier: classifier = load_classifier_from_file(args.input_classifier) else: classifier = instantiate_classifier_by_name( args.classifier_type, include_unlabeled=args.include_unlabeled) fm = FeatureMap() if (args.input_features): fm.read_from_file(args.input_features) classifier.add_featuremap(fm) if args.train: classifier.train() classifier.save_to_file(output_file) print "Saved classifier to %s" % output_file
def main(args): if not ( args.input_classifier or args.classifier_type ): print "Must specify input classifier or type!" return 1 if args.input_classifier: args.classifier_type = get_classifier_name( args.input_classifier ) output_file = args.input_classifier else: if args.output_directory: directory = args.output_directory else: directory = os.path.dirname(args.input_features) print "No output directory specified. Defaulting to %s"%directory if not os.path.exists(directory): os.makedirs(directory) if args.output_prefix: prefix = args.output_prefix else: prefix, extension = os.path.splitext(os.path.basename(args.input_features)) print "No output prefix selected. Defaulting to %s"%prefix output_file = "%s/%s.cls"%(directory,prefix) if args.classifier_type in CPP_CLASSIFIERS: call_cpp(args) return #Now onto just the python implementation if args.input_classifier: classifier = load_classifier_from_file( args.input_classifier ) else: classifier = instantiate_classifier_by_name( args.classifier_type, include_unlabeled=args.include_unlabeled ) fm = FeatureMap() if( args.input_features): fm.read_from_file( args.input_features ) classifier.add_featuremap( fm ) if args.train: classifier.train() classifier.save_to_file( output_file ) print "Saved classifier to %s"%output_file
def main(args): if args.output_directory: directory = args.output_directory else: directory = os.path.dirname(args.input_features) if directory == "": directory = "." print "No output directory specified. Defaulting to %s" % directory if not os.path.exists(directory): os.makedirs(directory) if args.output_prefix: prefix = args.output_prefix else: prefix, extension = os.path.splitext( os.path.basename(args.input_features)) print "No output prefix selected. Defaulting to %s" % prefix output_file = "%s/%s.libsvm" % (directory, prefix) fm = FeatureMap() fm.read_from_file(args.input_features) labeled_features = [] for pt in fm.get_feature_points(): feature = fm.get_feature(pt) label = fm.get_label(pt) if label < 0: continue if (not args.include_unlabeled) and label == 0: continue labeled_features.append((label, feature)) f = open(output_file, 'w') print len(labeled_features) for (label, feature) in labeled_features: f.write("%d\t" % label) for i, val in enumerate(feature): if val == 0: continue f.write("%d:%f " % (i, val)) f.write("\n") f.close()
def main(args): if args.output_directory: directory = args.output_directory else: directory = os.path.dirname(args.input_features) if directory == "": directory = "." print "No output directory specified. Defaulting to %s"%directory if not os.path.exists(directory): os.makedirs(directory) if args.output_prefix: prefix = args.output_prefix else: prefix, extension = os.path.splitext(os.path.basename(args.input_features)) print "No output prefix selected. Defaulting to %s"%prefix output_file = "%s/%s.libsvm"%(directory,prefix) fm = FeatureMap() fm.read_from_file( args.input_features ) labeled_features = [] for pt in fm.get_feature_points(): feature = fm.get_feature(pt) label = fm.get_label(pt) if label < 0: continue if (not args.include_unlabeled) and label == 0: continue labeled_features.append( (label, feature) ) f = open(output_file,'w') print len(labeled_features) for (label, feature) in labeled_features: f.write("%d\t"%label) for i,val in enumerate(feature): if val == 0: continue f.write("%d:%f "%(i,val)) f.write("\n") f.close()
def main(args): compared_image = cv.LoadImage( args.compared_image) reference_image = cv.LoadImage( args.reference_image ) compared_featuremap = FeatureMap() compared_featuremap.read_from_file( args.compared_features ) reference_featuremap = FeatureMap() reference_featuremap.read_from_file( args.reference_features ) compare_window = ClickWindow( compared_image, args.compare_zoom_out) reference_window = ReferenceWindow( reference_image, args.reference_zoom_out) reference_window.move( compare_window.size()[0], 0 ) #nn_solver = pyflann.FLANN() while(True): cont = update_all_windows() if not cont: break if compare_window.update_nn: click_pt = compare_window.click_pt closest_pt = min( compared_featuremap.get_feature_points(), key = lambda pt: l2_dist(pt,click_pt) ) compared_feature = compared_featuremap.get_feature( closest_pt ) distance_map = {} shape_map = {} size_map = {} for pt in reference_featuremap.get_feature_points(): distance_map[pt] = l2_dist( compared_feature, reference_featuremap.get_feature(pt) ) shape_map[pt] = reference_featuremap.get_shape(pt) size_map[pt] = reference_featuremap.get_size(pt) knn = compute_knn( distance_map.keys(), lambda pt: distance_map[pt], 20 ) reference_window.set_knn( knn ) reference_window.set_distance_map( distance_map ) reference_window.set_shape_map( shape_map ) reference_window.set_size_map( size_map ) compare_window.update_nn = False
def main(args): n_views = len(args.images) assert len(args.features) == len(args.zoom_outs) == n_views view_windows = [] for i in range(n_views): image = cv.LoadImage( args.images[i] ) featuremap = FeatureMap() featuremap.read_from_file( args.features[i] ) zoom_out = args.zoom_outs[i] view_window = ViewWindow( image, zoom_out, featuremap, i) view_windows.append(view_window) #Tile x = 0 y = 0 for win in view_windows: if x + win.size()[0] >= SCREEN_WIDTH: x = 0 y += win.size()[1] win.move(x,y) x += win.size()[0] while(True): cont = update_all_windows() if not cont: break