Example #1
0
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
Example #2
0
def main(args):
    if args.output_directory:
        directory = args.output_directory
    else:
        directory = os.path.dirname(args.compared_image)
        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_c = os.path.splitext(os.path.basename(args.compared_image))[0]
        prefix_r = os.path.splitext(os.path.basename(args.reference_image))[0]
        prefix = "%s_TO_%s"%(prefix_c, prefix_r) 
        print "No output prefix selected. Defaulting to %s"%prefix
    output_file = "%s/%s.matches"%(directory, prefix)
    if not args.input_match_file:
        args.input_match_file = output_file
    if not args.force_overwrite and os.path.exists( args.input_match_file ):
        match_set_old = MatchSet( args.compared_image, args.reference_image )
        match_set_old.read_from_file( args.input_match_file )
        for match in match_set_old.get_matches():
            compare_pts.append(match.compare_pt)
            reference_pts.append(match.reference_pt)
            strengths.append(match.strength)
    compared_image = cv.LoadImage( args.compared_image)
    reference_image = cv.LoadImage( args.reference_image )
    compare_window = ClickWindow( compared_image, args.compare_zoom_out, COMPARE)
    reference_window = ClickWindow( reference_image, args.reference_zoom_out, REFERENCE)

    global mode
    global strength
    while(True):
        cont = update_all_windows()
        if not cont:
            break
        if compare_window.click_pt and reference_window.click_pt:
            compare_pts.append(compare_window.click_pt)
            reference_pts.append(reference_window.click_pt)
            strengths.append(strength)
            compare_window.clear_click_pt()
            reference_window.clear_click_pt()
    if save_flag:
        match_set = MatchSet(args.compared_image, args.reference_image)
        for i in range( len(compare_pts) ):
            match_set.add_match( compare_pts[i], reference_pts[i], strengths[i] )
        match_set.save_to_file( output_file )
        print "Saved to %s"%output_file
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
Example #4
0
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
Example #5
0
def main(args):
    output_files = []
    compared_images = []
    compared_windows = []
    for i,compared_image_file in enumerate(args.compared_images):
        if args.output_directory:
            directory = args.output_directory
        else:
            directory = os.path.dirname(args.compared_images[0])
            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_c = os.path.splitext(os.path.basename(args.compared_images[i]))[0]
            prefix_r = os.path.splitext(os.path.basename(args.reference_image))[0]
            prefix = "%s_TO_%s"%(prefix_c, prefix_r) 
            print "No output prefix selected. Defaulting to %s"%prefix
        output_file = "%s/%s.matches"%(directory, prefix)
        output_files.append(output_file)
        compared_image = cv.LoadImage( args.compared_images[i])
        compared_images.append(compared_image)
        compared_window = ClickWindow( compared_image, args.compared_zoom_out, i)
        compared_windows.append(compared_window)
        compared_pts.append({})

    if args.input_points_file:
        point_set = PointSet()
        point_set.read_from_file( args.input_points_file )
        for i,pt in enumerate(point_set.get_points()):
            reference_pts[i] = pt
    reference_image = cv.LoadImage( args.reference_image )
    reference_window = ClickWindow( reference_image, args.reference_zoom_out, -1)
    update_all_windows()
    # Tile
    y = reference_window.size()[1]
    x = 0
    for win in compared_windows:
        if x + win.size()[0] >= SCREEN_WIDTH:
            x = 0
            y += win.size()[1]
        print "Moving window %d to %f,%f"%(win.id,x,y)
        win.move(x,y)
        x += win.size()[0]

    global mode
    global selected_index
    while(True):
        cont = update_all_windows()
        if not cont:
            break
        if reference_window.click_pt:
            print "Updating reference_window click_pt"
            key = safe_max(reference_pts.keys())+1
            reference_pts[key] = reference_window.click_pt
            selected_index = key
            reference_window.clear_click_pt()
        for i,compared_window in enumerate(compared_windows):
            if compared_window.click_pt and selected_index > -1:
                print selected_index
                compared_pts[i][selected_index] = compared_window.click_pt
                compared_window.clear_click_pt()
    if save_flag:
        for i in range(len(compared_windows)):
            match_set = MatchSet(args.compared_images[i], args.reference_image)
            for k in compared_pts[i].keys():
                match_set.add_match( compared_pts[i][k], reference_pts[k], 1 )
            match_set.save_to_file( output_files[i] )
            print "Saved to %s"%output_files[i]
def main(args):
    output_files = []
    compared_images = []
    compared_windows = []
    for i, compared_image_file in enumerate(args.compared_images):
        if args.output_directory:
            directory = args.output_directory
        else:
            directory = os.path.dirname(args.compared_images[0])
            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_c = os.path.splitext(os.path.basename(args.compared_images[i]))[0]
            prefix_r = os.path.splitext(os.path.basename(args.reference_image))[0]
            prefix = "%s_TO_%s" % (prefix_c, prefix_r)
            print "No output prefix selected. Defaulting to %s" % prefix
        output_file = "%s/%s.matches" % (directory, prefix)
        output_files.append(output_file)
        compared_image = cv.LoadImage(args.compared_images[i])
        compared_images.append(compared_image)
        compared_window = ClickWindow(compared_image, args.compared_zoom_out, i)
        compared_windows.append(compared_window)
        compared_pts.append({})

    if args.input_points_file:
        point_set = PointSet()
        point_set.read_from_file(args.input_points_file)
        for i, pt in enumerate(point_set.get_points()):
            reference_pts[i] = pt
    reference_image = cv.LoadImage(args.reference_image)
    reference_window = ClickWindow(reference_image, args.reference_zoom_out, -1)
    update_all_windows()
    # Tile
    y = reference_window.size()[1]
    x = 0
    for win in compared_windows:
        if x + win.size()[0] >= SCREEN_WIDTH:
            x = 0
            y += win.size()[1]
        print "Moving window %d to %f,%f" % (win.id, x, y)
        win.move(x, y)
        x += win.size()[0]

    global mode
    global selected_index
    while True:
        cont = update_all_windows()
        if not cont:
            break
        if reference_window.click_pt:
            print "Updating reference_window click_pt"
            key = safe_max(reference_pts.keys()) + 1
            reference_pts[key] = reference_window.click_pt
            selected_index = key
            reference_window.clear_click_pt()
        for i, compared_window in enumerate(compared_windows):
            if compared_window.click_pt and selected_index > -1:
                print selected_index
                compared_pts[i][selected_index] = compared_window.click_pt
                compared_window.clear_click_pt()
    if save_flag:
        for i in range(len(compared_windows)):
            match_set = MatchSet(args.compared_images[i], args.reference_image)
            for k in compared_pts[i].keys():
                match_set.add_match(compared_pts[i][k], reference_pts[k], 1)
            match_set.save_to_file(output_files[i])
            print "Saved to %s" % output_files[i]