opensfm/actions/detect_features.py (20 lines of code) (raw):

import logging from timeit import default_timer as timer from opensfm import features_processing, io from opensfm.dataset_base import DataSetBase logger = logging.getLogger(__name__) def run_dataset(data: DataSetBase): """Compute features for all images.""" start = timer() features_processing.run_features_processing(data, data.images(), False) end = timer() write_report(data, end - start) def write_report(data: DataSetBase, wall_time: float): image_reports = [] for image in data.images(): try: txt = data.load_report("features/{}.json".format(image)) image_reports.append(io.json_loads(txt)) except IOError: logger.warning("No feature report image {}".format(image)) report = {"wall_time": wall_time, "image_reports": image_reports} data.save_report(io.json_dumps(report), "features.json")