|
import argparse |
|
|
|
import imagesize |
|
|
|
import os |
|
|
|
import subprocess |
|
|
|
parser = argparse.ArgumentParser(description="MegaDepth Undistortion") |
|
|
|
parser.add_argument( |
|
"--colmap_path", type=str, required=True, help="path to colmap executable" |
|
) |
|
parser.add_argument("--base_path", type=str, required=True, help="path to MegaDepth") |
|
|
|
args = parser.parse_args() |
|
|
|
sfm_path = os.path.join(args.base_path, "MegaDepth_v1_SfM") |
|
base_depth_path = os.path.join(args.base_path, "phoenix/S6/zl548/MegaDepth_v1") |
|
output_path = os.path.join(args.base_path, "Undistorted_SfM") |
|
|
|
os.mkdir(output_path) |
|
|
|
for scene_name in os.listdir(base_depth_path): |
|
current_output_path = os.path.join(output_path, scene_name) |
|
os.mkdir(current_output_path) |
|
|
|
image_path = os.path.join(base_depth_path, scene_name, "dense0", "imgs") |
|
if not os.path.exists(image_path): |
|
continue |
|
|
|
|
|
max_image_size = 0 |
|
for image_name in os.listdir(image_path): |
|
max_image_size = max( |
|
max_image_size, max(imagesize.get(os.path.join(image_path, image_name))) |
|
) |
|
|
|
|
|
subprocess.call( |
|
[ |
|
os.path.join(args.colmap_path, "colmap"), |
|
"image_undistorter", |
|
"--image_path", |
|
os.path.join(sfm_path, scene_name, "images"), |
|
"--input_path", |
|
os.path.join(sfm_path, scene_name, "sparse", "manhattan", "0"), |
|
"--output_path", |
|
current_output_path, |
|
"--max_image_size", |
|
str(max_image_size), |
|
] |
|
) |
|
|
|
|
|
sparse_txt_path = os.path.join(current_output_path, "sparse-txt") |
|
os.mkdir(sparse_txt_path) |
|
subprocess.call( |
|
[ |
|
os.path.join(args.colmap_path, "colmap"), |
|
"model_converter", |
|
"--input_path", |
|
os.path.join(current_output_path, "sparse"), |
|
"--output_path", |
|
sparse_txt_path, |
|
"--output_type", |
|
"TXT", |
|
] |
|
) |
|
|