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 handleEventsUnzoomed(self, event, x, y, flags, param): if event == cv.CV_EVENT_LBUTTONDOWN: if mode == SET or self.id >= 0: self.click_pt = (x, y) elif mode == SELECT: pts = self.get_pts() global selected_index selected_index = min(pts.keys(), key=lambda i: l2_dist(pts[i], (x, y)))
def handleEventsUnzoomed(self,event,x,y,flags,param): if event == cv.CV_EVENT_LBUTTONDOWN: if mode == SET or self.id >= 0: self.click_pt = (x,y) elif mode == SELECT: pts = self.get_pts() global selected_index selected_index = min( pts.keys(), key = lambda i: l2_dist(pts[i], (x,y) ) )
def handleEventsUnzoomed(self, event, x, y, flags, param): if event == cv.CV_EVENT_LBUTTONDOWN: if self.mode == SET: points.append((x, y)) elif self.mode == DELETE: i = min(range(len(points)), key=lambda i: l2_dist(points[i], (x, y))) deleted.append(points.pop(i)) elif self.mode == LINE_TILE: if len(self.tile_params) < 3: self.tile_params.append((x, y)) elif self.mode == BLOCK_TILE: if len(self.tile_params) < 5: self.tile_params.append((x, y))
def handleEventsUnzoomed(self,event,x,y,flags,param): if event == cv.CV_EVENT_LBUTTONDOWN: if self.mode == SET: points.append( (x,y) ) elif self.mode == DELETE: i = min( range(len(points)), key = lambda i: l2_dist(points[i], (x,y) ) ) deleted.append(points.pop(i)) elif self.mode == LINE_TILE: if len(self.tile_params) < 3: self.tile_params.append( (x,y) ) elif self.mode == BLOCK_TILE: if len(self.tile_params) < 5: self.tile_params.append( (x,y) )
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 dist(self, v1, v2): return l2_dist(v1, v2)
def dist(self, v1, v2): #Hard coded for now, make dist fxn variable later return l2_dist(v1, v2)
def dist( self, v1, v2 ): return l2_dist( v1, v2 )
def dist( self, v1, v2 ): #Hard coded for now, make dist fxn variable later return l2_dist( v1, v2 )