DepthCrafter / benchmark /dataset_extract_nyu.py
sdsdsdadasd3's picture
[Add] Add scripts for preparing benchmark datasets.
c186cfb
raw
history blame contribute delete
No virus
3.11 kB
import os
import numpy as np
import os.path as osp
from PIL import Image
from tqdm import tqdm
import csv
import imageio
def _read_image(img_rel_path) -> np.ndarray:
image_to_read = img_rel_path
image = Image.open(image_to_read)
image = np.asarray(image)
return image
def depth_read(filename):
depth_in = _read_image(filename)
depth_decoded = depth_in / 1000.0
return depth_decoded
def extract_nyu(
root,
depth_root,
csv_save_path="",
datatset_name="",
filename_ls_path="",
saved_rgb_dir="",
saved_disp_dir="",
):
with open(filename_ls_path, "r") as f:
filenames = [s.split() for s in f.readlines()]
all_samples = []
for i, pair_names in enumerate(tqdm(filenames)):
img_name = pair_names[0]
filled_depth_name = pair_names[2]
im_path = osp.join(root, img_name)
depth_path = osp.join(depth_root, filled_depth_name)
depth = depth_read(depth_path)
disp = depth
video_depths = [disp]
video_imgs = [np.array(Image.open(im_path))]
disp_video = np.array(video_depths)[:, None]
img_video = np.array(video_imgs)[..., 0:3]
disp_video = disp_video[:, :, 45:471, 41:601]
img_video = img_video[:, 45:471, 41:601, :]
data_root = saved_rgb_dir + datatset_name
disp_root = saved_disp_dir + datatset_name
os.makedirs(data_root, exist_ok=True)
os.makedirs(disp_root, exist_ok=True)
img_video_dir = data_root
disp_video_dir = disp_root
img_video_path = os.path.join(img_video_dir, f"{img_name[:-4]}_rgb_left.mp4")
disp_video_path = os.path.join(disp_video_dir, f"{img_name[:-4]}_disparity.npz")
dir_name = os.path.dirname(img_video_path)
os.makedirs(dir_name, exist_ok=True)
dir_name = os.path.dirname(disp_video_path)
os.makedirs(dir_name, exist_ok=True)
imageio.mimsave(
img_video_path, img_video, fps=15, quality=10, macro_block_size=1
)
np.savez(disp_video_path, disparity=disp_video)
sample = {}
sample["filepath_left"] = os.path.join(
f"{datatset_name}/{img_name[:-4]}_rgb_left.mp4"
)
sample["filepath_disparity"] = os.path.join(
f"{datatset_name}/{img_name[:-4]}_disparity.npz"
)
all_samples.append(sample)
filename_ = csv_save_path
os.makedirs(os.path.dirname(filename_), exist_ok=True)
fields = ["filepath_left", "filepath_disparity"]
with open(filename_, "w") as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fields)
writer.writeheader()
writer.writerows(all_samples)
print(f"{filename_} has been saved.")
if __name__ == "__main__":
extract_nyu(
root="path/to/NYUv2/",
depth_root="path/to/NYUv2/",
filename_ls_path="path/to/NYUv2/filename_list_test.txt",
saved_rgb_dir="./benchmark/datasets/",
saved_disp_dir="./benchmark/datasets/",
csv_save_path=f"./benchmark/datasets/NYUv2.csv",
datatset_name="NYUv2",
)