in opensfm/dataset.py [0:0]
def subset(self, name: str, images_subset: List[str]) -> "DataSet":
"""Create a subset of this dataset by symlinking input data."""
subset_dataset_path = os.path.join(self.data_path, name)
self.io_handler.mkdir_p(subset_dataset_path)
folders = ["images", "segmentations", "masks"]
for folder in folders:
self.io_handler.mkdir_p(os.path.join(subset_dataset_path, folder))
subset_dataset = DataSet(subset_dataset_path, self.io_handler)
files = []
for method in [
"_camera_models_file",
"_config_file",
"_camera_models_overrides_file",
"_exif_overrides_file",
]:
files.append(
(
getattr(self, method)(),
getattr(subset_dataset, method)(),
)
)
for image in images_subset:
files.append(
(
self._image_file(image),
os.path.join(subset_dataset_path, "images", image),
)
)
files.append(
(
self._segmentation_file(image),
os.path.join(subset_dataset_path, "segmentations", image + ".png"),
)
)
if image in self.mask_files:
files.append(
(
self.mask_files[image],
os.path.join(subset_dataset_path, "masks", image + ".png"),
)
)
for src, dst in files:
if not self.io_handler.exists(src):
continue
self.io_handler.rm_if_exist(dst)
self.io_handler.symlink(src, dst)
return DataSet(subset_dataset_path, self.io_handler)