def find_object_values(mask): ''' object_values = find_object_values(mask) Find pixel values of each of the objects in an object mask Returns a numpy array containing the values. len(object_values) = total number of objects in the mask ''' from numpy import unique, array return unique(array(mask)) while im_ids: ##instantiate montage with random geometry obj_comp = imo.simple_composition(SIDE, 1, min_radius=min_obj_size, max_radius=max_obj_size) m = imo.montage(SIDE, background_image, obj_comp, mask_margin = mask_margin, object_background=background_contrast, reveal_corners = 5) ##loop over number of objects while not m.full(): ##sample an object im, mask, object_id, imdx = grab_image(im_dir, im_ids) m.add_one_object(im, mask, object_id) ##print picture to file m.picture.save(save_to+imdx) m.background_picture.save(save_to+'background.'+imdx) labeled = imo.put_text(m.background_picture, message = labels.pop(), position = (.5, .5), size = font_size) labeled.save(save_to+'label.background.'+imdx)
tc = imo.boring_composition(SIDE=SIDE, locations=box_centers, radius = radius) ##create a montage for presenting the object mo = imo.montage(SIDE, background_image, tc) ##create the list mo.object_list = [oo]*tc.number_of_objects ##make the pictures with objects, location cues and no labels for pcp runs try: object_pictures = mo.show_picture(mask_margin=mask_margin) except: 1/0 ##show them for good measure mo.show_picture(flat=True)[0].show() cnt = 0 ##add text to each pasted object frame and save for ii,op in enumerate(object_pictures): imo.put_text(op.resize((ENLARGE_TO,ENLARGE_TO),imo.Image.ANTIALIAS), message = lbl, position = (.5, .5), fill=box_colors[ii],size = category_cue_font_size).save(save_to+'/frame_files/'+image_file_names % (image_id, object_id, cnt,'image')) copy_background = Image.open(background_image_file) imo.put_text(copy_background.resize((ENLARGE_TO,ENLARGE_TO), imo.Image.ANTIALIAS), message = lbl, position = (.5, .5), fill=box_colors[ii],size = category_cue_font_size).save(save_to+'/frame_files/'+image_file_names % (image_id, object_id, cnt,'cue')) cnt += 1 # ##make "rest" frames jitters = [(0,0),(1,0),(0,1),(1,1)] cnt = 0 for offsets in jitters: copy_background = Image.open(background_image_file).offset(offsets[0],offsets[1]) imo.put_text(copy_background.resize((ENLARGE_TO,ENLARGE_TO),imo.Image.ANTIALIAS), message=rest_label, position=(0.5,0.5)).save(save_to+'/frame_files/'+'rest_frame_%d.png' % (cnt)) cnt += 1 ##make pictures with location cues only for both the pcp and img runs # cue_pictures = mo.show_picture(mask_margin=mask_margin, reveal_corners = location_cue_size, locations_only = True) # cnt = 0 # for cp in cue_pictures: # ##location cues only for img.
tc = imo.boring_composition(SIDE=SIDE, locations=box_centers, radius = radius) ##create a montage for presenting the object mo = imo.montage(SIDE, background_image, tc) ##create the list mo.object_list = [oo]*tc.number_of_objects ##make the pictures with objects, location cues and no labels for pcp runs try: object_pictures = mo.show_picture(mask_margin=mask_margin) except: 1/0 ##show them for good measure mo.show_picture(flat=True)[0].show() cnt = 0 ##add text to each pasted object frame and save for ii,op in enumerate(object_pictures): imo.put_text(op, message = lbl, position = (.5, .5), fill=box_colors[ii],size = category_cue_font_size).save(save_to+'/frame_files/'+image_file_names % (image_id, object_id, cnt,'image')) copy_background = Image.open('/Users/tnaselar/Data/Presentation/single.object.boxes/Boxes2.png') imo.put_text(copy_background, message = lbl, position = (.5, .5), fill=box_colors[ii],size = category_cue_font_size).save(save_to+'/frame_files/'+image_file_names % (image_id, object_id, cnt,'cue')) cnt += 1 ##make a "rest" frame copy_background = Image.open('/Users/tnaselar/Data/Presentation/single.object.boxes/Boxes2.png') imo.put_text(copy_background, message=rest_label, position=(0.5,0.5)).save(save_to+'/frame_files/'+'rest_frame.png') ##make pictures with location cues only for both the pcp and img runs # cue_pictures = mo.show_picture(mask_margin=mask_margin, reveal_corners = location_cue_size, locations_only = True) # cnt = 0 # for cp in cue_pictures: # ##location cues only for img. # imo.reveal_center(cp, fixation_dot_size, fill=fixation_dot_color).save(save_to+'/frame_files/'+image_file_names % (image_id, object_id, cnt, 'location')) # ##location cues + labels for img and pcp # imo.put_text(cp, message = lbl, position = (.5, .5), size = category_cue_font_size).save(save_to+'/frame_files/'+image_file_names % (image_id, object_id, cnt,'cue'))
imo.reveal_center(op, fixation_dot_size, fill=fixation_dot_color).save( save_to + "/frame_files/" + image_file_names % (image_id, object_id, cnt, "image") ) cnt += 1 ##make pictures with location cues only for both the pcp and img runs cue_pictures = mo.show_picture(mask_margin=mask_margin, reveal_corners=location_cue_size, locations_only=True) cnt = 0 for cp in cue_pictures: ##location cues only for img. imo.reveal_center(cp, fixation_dot_size, fill=fixation_dot_color).save( save_to + "/frame_files/" + image_file_names % (image_id, object_id, cnt, "location") ) ##location cues + labels for img and pcp imo.put_text(cp, message=lbl, position=(0.5, 0.5), size=category_cue_font_size).save( save_to + "/frame_files/" + image_file_names % (image_id, object_id, cnt, "cue") ) cnt += 1 # mo.dump(save_to+montage_object_file...) ##for the trn runs ##create a "simple_composition" and a montage # sc = imo.simple_composition(len(list_of_trn_objects), max_radius = max_object_radius, min_radius=min_object_radius) # mo = imo.montage(SIDE, imo.make_a_blank(SIDE,background_image_color,'RGB'), sc) ##<< this will probably kill memory # while list_of_trn_objects: # object_specs = list_of_trn_objects.pop() # image_id = object_specs[0] # object_id = object_specs[1] # number_of_locations = object_specs[2]