From e6d780d2a099a8a6f59b6e1f32d8f09a5fc84218 Mon Sep 17 00:00:00 2001 From: Congrong Xu <50019703+KevinXu02@users.noreply.github.com> Date: Wed, 15 May 2024 08:33:46 -0700 Subject: [PATCH] Only import pycolmap in run_hloc (#3146) * remove pycolmap import on windows * only import when run hloc * also for pixsfm * fix --- nerfstudio/process_data/hloc_utils.py | 46 +++++++++++++-------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/nerfstudio/process_data/hloc_utils.py b/nerfstudio/process_data/hloc_utils.py index eda9ee5b0..cb53d68f5 100644 --- a/nerfstudio/process_data/hloc_utils.py +++ b/nerfstudio/process_data/hloc_utils.py @@ -26,29 +26,6 @@ from typing import Literal from nerfstudio.process_data.process_data_utils import CameraModel from nerfstudio.utils.rich_utils import CONSOLE -try: - # TODO(1480) un-hide pycolmap import - import pycolmap - from hloc import ( # type: ignore - extract_features, - match_features, - pairs_from_exhaustive, - pairs_from_retrieval, - reconstruction, - ) -except ImportError: - _HAS_HLOC = False - -else: - _HAS_HLOC = True - -try: - from pixsfm.refine_hloc import PixSfM # type: ignore -except ImportError: - _HAS_PIXSFM = False -else: - _HAS_PIXSFM = True - def run_hloc( image_dir: Path, @@ -88,6 +65,29 @@ def run_hloc( refine_pixsfm: If True, refine the reconstruction using pixel-perfect-sfm. use_single_camera_mode: If True, uses one camera for all frames. Otherwise uses one camera per frame. """ + + try: + # TODO(1480) un-hide pycolmap import + import pycolmap + from hloc import ( # type: ignore + extract_features, + match_features, + pairs_from_exhaustive, + pairs_from_retrieval, + reconstruction, + ) + except ImportError: + _HAS_HLOC = False + else: + _HAS_HLOC = True + + try: + from pixsfm.refine_hloc import PixSfM # type: ignore + except ImportError: + _HAS_PIXSFM = False + else: + _HAS_PIXSFM = True + if not _HAS_HLOC: CONSOLE.print( f"[bold red]Error: To use this set of parameters ({feature_type}/{matcher_type}/hloc), "