Spaces:
Running
on
Zero
Running
on
Zero
import os | |
import subprocess | |
# $ DATASET_PATH=/path/to/dataset | |
# $ colmap feature_extractor \ | |
# --database_path $DATASET_PATH/database.db \ | |
# --image_path $DATASET_PATH/images | |
# $ colmap exhaustive_matcher \ | |
# --database_path $DATASET_PATH/database.db | |
# $ mkdir $DATASET_PATH/sparse | |
# $ colmap mapper \ | |
# --database_path $DATASET_PATH/database.db \ | |
# --image_path $DATASET_PATH/images \ | |
# --output_path $DATASET_PATH/sparse | |
# $ mkdir $DATASET_PATH/dense | |
def run_colmap(basedir, match_type): | |
logfile_name = os.path.join(basedir, 'colmap_output.txt') | |
logfile = open(logfile_name, 'w') | |
feature_extractor_args = [ | |
'colmap', 'feature_extractor', | |
'--database_path', os.path.join(basedir, 'database.db'), | |
'--image_path', os.path.join(basedir, 'images'), | |
'--ImageReader.single_camera', '1', | |
'--ImageReader.camera_model', 'SIMPLE_PINHOLE', | |
# '--SiftExtraction.use_gpu', '0', | |
] | |
feat_output = ( subprocess.check_output(feature_extractor_args, universal_newlines=True) ) | |
logfile.write(feat_output) | |
print('Features extracted') | |
exhaustive_matcher_args = [ | |
'colmap', match_type, | |
'--database_path', os.path.join(basedir, 'database.db'), | |
] | |
match_output = ( subprocess.check_output(exhaustive_matcher_args, universal_newlines=True) ) | |
logfile.write(match_output) | |
print('Features matched') | |
p = os.path.join(basedir, 'sparse') | |
if not os.path.exists(p): | |
os.makedirs(p) | |
# mapper_args = [ | |
# 'colmap', 'mapper', | |
# '--database_path', os.path.join(basedir, 'database.db'), | |
# '--image_path', os.path.join(basedir, 'images'), | |
# '--output_path', os.path.join(basedir, 'sparse'), | |
# '--Mapper.num_threads', '16', | |
# '--Mapper.init_min_tri_angle', '4', | |
# ] | |
mapper_args = [ | |
'colmap', 'mapper', | |
'--database_path', os.path.join(basedir, 'database.db'), | |
'--image_path', os.path.join(basedir, 'images'), | |
'--output_path', os.path.join(basedir, 'sparse'), # --export_path changed to --output_path in colmap 3.6 | |
'--Mapper.num_threads', '16', | |
'--Mapper.init_min_tri_angle', '4', | |
'--Mapper.multiple_models', '0', | |
'--Mapper.extract_colors', '0', | |
] | |
map_output = ( subprocess.check_output(mapper_args, universal_newlines=True) ) | |
logfile.write(map_output) | |
logfile.close() | |
print('Sparse map created') | |
print( 'Finished running COLMAP, see {} for logs'.format(logfile_name) ) | |