Esempio n. 1
0
def add_rgb_to_leveldb(video_dir, annotation, db, demo_name, patch_size, num_samples, start_id):
    frame_stamps = [seg_info["look"] for seg_info in annotation]
    rgb_imgs, depth_imgs = get_video_frames(video_dir, frame_stamps)
    
    batch = leveldb.WriteBatch()
    
    for (i_seg, seg_info) in enumerate(annotation):
        rgb_img = rgb_imgs[i_seg]
        (h, w, c) = rgb_img.shape
        
        patches = sample_patches(rgb_img, patch_size, num_samples)
        
        for (i, patch) in enumerate(patches):
            patch = cv2datum(patch)
            datum = caffe.io.array_to_datum(patch)
            patch_string = datum.SerializeToString()
            patch_unique_id = start_id
            start_id = start_id + 1
            batch.Put(str(patch_unique_id).zfill(7), patch_string)
            
    db.Write(batch, sync=True)
    
    return start_id
def add_rgbd_to_hdf(video_dir, annotation, hdfroot, demo_name):
    
    if demo_name in hdfroot.keys():
        demo_group = hdfroot[demo_name]
    else:
        demo_group = hdfroot.create_group(demo_name)
        
    frame_stamps = [seg_info["look"] for seg_info in annotation]
    rgb_imgs, depth_imgs= get_video_frames(video_dir, frame_stamps)
    
    for (i_seg, seg_info) in enumerate(annotation):
        
        if seg_info["name"] == "done": continue
        
        if seg_info["name"] in demo_group.keys():
            seg_group = demo_group[seg_info["name"]]
        else:
            seg_group = demo_group.create_group(seg_info["name"])
    

        seg_group["rgb"] = rgb_imgs[i_seg]
        
        seg_group["depth"] = depth_imgs[i_seg]
with open(task_file, "r") as fh: task_info = yaml.load(fh)

demos_info = task_info['demos']


for demo_info in demos_info:

    demo_name = demo_info['demo_name']
    print demo_name
    demo_dir = osp.join(task_dir, demo_name)
    rgbd_dir = osp.join(demo_dir, demo_names.video_dir%(1))
    annotation_file = osp.join(demo_dir,"ann.yaml")
    with open(annotation_file, "r") as fh: annotations = yaml.load(fh)
    
    look_stamps = [seg_info['look'] for seg_info in annotations]
    rgb_imgs, depth_imgs= get_video_frames(rgbd_dir, look_stamps)
    
    if demo_name in perturb_demofile.keys():
        demo_group = perturb_demofile[demo_name]
    else:
        demo_group = perturb_demofile.create_group(demo_name)
        
    
    n_perturb_existed = len(demo_group.keys()) # number of perturbations
    
    object_xyz = cloud_proc_func(rgb_imgs[0], depth_imgs[0], np.eye(4)) 
    object_xyz = clouds.downsample(object_xyz, .01)

    hitch_xyz = None
    hitch_pos = None
    if args.has_hitch: