Spaces:
Running
on
Zero
Running
on
Zero
| import os | |
| import numpy as np | |
| import os.path as osp | |
| import json | |
| import glob | |
| import cv2 | |
| import shutil | |
| from PIL import Image | |
| from natsort import natsorted | |
| def even_or_odd(num): | |
| if num % 2 == 0: | |
| return num | |
| else: | |
| return num - 1 | |
| def gen_json(root_path, dataset, start_id, end_id, step, save_path=None): | |
| rgb_name = "rgb" | |
| if dataset == "kitti": | |
| factor = 256.0 | |
| elif dataset == "nyuv2": | |
| factor = 6000.0 | |
| elif dataset == "bonn": | |
| factor = 5000.0 | |
| elif dataset == 'sintel': | |
| factor = 65535 / 650 | |
| rgb_name = "clean" | |
| elif dataset == 'scannet': | |
| factor = 1000.0 | |
| rgb_name = "color" | |
| else: | |
| raise NotImplementedError | |
| data = {} | |
| data[dataset] = [] | |
| pieces = glob.glob(osp.join(root_path, "*")) | |
| count = 0 | |
| for piece in pieces: | |
| if not osp.isdir(piece): | |
| continue | |
| name = piece.split('/')[-1] | |
| name_dict = {name:[]} | |
| images = glob.glob(osp.join(piece, rgb_name, "*.png")) + glob.glob(osp.join(piece, rgb_name, "*.jpg")) | |
| images = natsorted(images) | |
| depths = glob.glob(osp.join(piece, "depth/*.png")) | |
| depths = natsorted(depths) | |
| images = images[start_id:end_id:step] | |
| depths = depths[start_id:end_id:step] | |
| for i in range(len(images)): | |
| image = images[i] | |
| xx = image[len(root_path)+1:] | |
| depth = depths[i][len(root_path)+1:] | |
| tmp = {} | |
| tmp["image"] = xx | |
| tmp["gt_depth"] = depth | |
| tmp["factor"] = factor | |
| name_dict[name].append(tmp) | |
| data[dataset].append(name_dict) | |
| with open(save_path, "w") as f: | |
| json.dump(data, f, indent= 4) | |
| def gen_json_scannet_tae(root_path, start_id, end_id, step, save_path=None): | |
| data = {} | |
| data["scannet"] = [] | |
| pieces = glob.glob(osp.join(root_path, "*")) | |
| color = 'color_origin' | |
| for piece in pieces: | |
| if not osp.isdir(piece): | |
| continue | |
| name = piece.split('/')[-1] | |
| name_dict = {name:[]} | |
| images = glob.glob(osp.join(piece,color, "*.jpg")) | |
| images = natsorted(images) | |
| depths = glob.glob(osp.join(piece, "depth/*.png")) | |
| depths = natsorted(depths) | |
| images = images[start_id:end_id:step] | |
| depths = depths[start_id:end_id:step] | |
| print(f"sequence frame number: {piece}") | |
| count = 0 | |
| for i in range(len(images)): | |
| image = images[i] | |
| xx = image[len(root_path)+1:] | |
| depth = depths[i][len(root_path)+1:] | |
| base_path = osp.dirname(image) | |
| base_path = base_path.replace(color, 'intrinsic') | |
| K = np.loadtxt(base_path + '/intrinsic_depth.txt') | |
| pose_path = image.replace(color, 'pose').replace('.jpg', '.txt') | |
| pose = np.loadtxt(pose_path) | |
| tmp = {} | |
| tmp["image"] = xx | |
| tmp["gt_depth"] = depth | |
| tmp["factor"] = 1000.0 | |
| tmp["K"] = K.tolist() | |
| tmp["pose"] = pose.tolist() | |
| name_dict[name].append(tmp) | |
| data["scannet"].append(name_dict) | |
| with open(save_path, "w") as f: | |
| json.dump(data, f, indent= 4) | |
| def get_sorted_files(root_path, suffix): | |
| all_img_names = os.listdir(root_path) | |
| all_img_names = [x for x in all_img_names if x.endswith(suffix)] | |
| print(f"sequence frame number: {len(all_img_names)}") | |
| all_img_names.sort() | |
| all_img_names = sorted(all_img_names, key=lambda x: int(x.split(".")[0][-4:])) | |
| return all_img_names | |
| def copy_crop_files(im_path, depth_path, out_img_path, out_depth_path, dataset): | |
| img = np.array(Image.open(im_path)) | |
| if dataset == "kitti" or dataset == "bonn": | |
| height, width = img.shape[:2] | |
| height = even_or_odd(height) | |
| width = even_or_odd(width) | |
| img = img[:height, :width] | |
| elif dataset == "nyuv2": | |
| img = img[45:471, 41:601, :] | |
| elif dataset == "scannet": | |
| img = img[8:-8, 11:-11, :] | |
| os.makedirs(osp.dirname(out_img_path), exist_ok=True) | |
| os.makedirs(osp.dirname(out_depth_path), exist_ok=True) | |
| cv2.imwrite( | |
| out_img_path, | |
| img, | |
| ) | |
| shutil.copyfile(depth_path, out_depth_path) | |