Spaces:
No application file
No application file
| from pathlib import Path | |
| import logging | |
| import numpy as np | |
| from collections import defaultdict | |
| import pycolmap | |
| logger = logging.getLogger(__name__) | |
| def parse_image_list(path, with_intrinsics=False): | |
| images = [] | |
| with open(path, "r") as f: | |
| for line in f: | |
| line = line.strip("\n") | |
| if len(line) == 0 or line[0] == "#": | |
| continue | |
| name, *data = line.split() | |
| if with_intrinsics: | |
| model, width, height, *params = data | |
| params = np.array(params, float) | |
| cam = pycolmap.Camera(model, int(width), int(height), params) | |
| images.append((name, cam)) | |
| else: | |
| images.append(name) | |
| assert len(images) > 0 | |
| logger.info(f"Imported {len(images)} images from {path.name}") | |
| return images | |
| def parse_image_lists(paths, with_intrinsics=False): | |
| images = [] | |
| files = list(Path(paths.parent).glob(paths.name)) | |
| assert len(files) > 0 | |
| for lfile in files: | |
| images += parse_image_list(lfile, with_intrinsics=with_intrinsics) | |
| return images | |
| def parse_retrieval(path): | |
| retrieval = defaultdict(list) | |
| with open(path, "r") as f: | |
| for p in f.read().rstrip("\n").split("\n"): | |
| if len(p) == 0: | |
| continue | |
| q, r = p.split() | |
| retrieval[q].append(r) | |
| return dict(retrieval) | |
| def names_to_pair(name0, name1, separator="/"): | |
| return separator.join((name0.replace("/", "-"), name1.replace("/", "-"))) | |
| def names_to_pair_old(name0, name1): | |
| return names_to_pair(name0, name1, separator="_") | |