import json import os from detrsmpl.core.cameras.camera_parameters import CameraParameter from detrsmpl.core.renderer.vedo_render import VedoRenderer from detrsmpl.utils.path_utils import check_path_suffix def visualize_chessboard_kinects_rgb(chessboard_path: str, interactive: bool = True, show: bool = True): """Visualize all the RGB cameras in a chessboard file. Args: chessboard_path (str): Path to the chessboard file. interactive (bool, optional): Pause and interact with window (True) or continue execution (False). Defaults to True. show (bool, optional): Whether to show in a window. Defaults to True. """ # Load camera parameter from a json file camera_para_json_dict = json.load(open(chessboard_path)) camera_para_dict = {} for camera_id in camera_para_json_dict.keys(): try: camera_id_int = int(camera_id) # if camera_id is an instance of int # and it can be divided by 2, it's an rgb camera if camera_id_int % 2 == 0: pass else: continue except ValueError: continue temp_camera_parameter = CameraParameter(name=camera_id) temp_camera_parameter.load_from_chessboard( camera_para_json_dict[camera_id], camera_id) camera_para_dict[camera_id] = temp_camera_parameter camera_vedo_renderer = VedoRenderer() camera_vedo_renderer.set_y_reverse() for camera_id in camera_para_dict.keys(): camera_vedo_renderer.add_camera(camera_para_dict[camera_id]) if show: camera_vedo_renderer.show(with_axis=False, interactive=interactive) def visualize_dumped_camera_parameter(dumped_dir: str, interactive: bool = True, show: bool = True): """Visualize all cameras dumped in a directory. Args: dumped_dir (str): Path to the directory. interactive (bool, optional): Pause and interact with window (True) or continue execution (False). Defaults to True. show (bool, optional): Whether to show in a window. Defaults to True. """ file_list = os.listdir(dumped_dir) camera_para_list = [] for file_name in file_list: file_path = os.path.join(dumped_dir, file_name) if not check_path_suffix(file_path, ['.json']): continue else: cam_para = CameraParameter() cam_para.load(file_path) camera_para_list.append(cam_para) camera_vedo_renderer = VedoRenderer() camera_vedo_renderer.set_y_reverse() for camera_para in camera_para_list: camera_vedo_renderer.add_camera(camera_para) if show: camera_vedo_renderer.show(with_axis=False, interactive=interactive)