| import yaml | |
| import sys | |
| import argparse | |
| import numpy as np | |
| def get_camera_intrinsics(calibration_yaml, cam_name): | |
| with open(calibration_yaml, 'r') as file: | |
| data = yaml.safe_load(file) | |
| cameras = data.get('cameras', []) | |
| for cam_ in cameras: | |
| if cam_['cam_name'] == cam_name: | |
| cam = cam_; | |
| break; | |
| has_dist = ('distortion_type' in cam) and ('distortion_coefficients' in cam) | |
| K = np.array([[cam['focal_length'][0], 0, cam['principal_point'][0]], | |
| [0, cam['focal_length'][1], cam['principal_point'][1]], | |
| [0, 0, 1]], dtype=np.float32) | |
| if has_dist: | |
| dist= " ".join(map(str, cam['distortion_coefficients'])) | |
| print(f"{cam['distortion_type']} {K[0,0]} {K[1,1]} {K[0,2]} {K[1,2]} {dist}") | |
| else: | |
| print(f"{cam['cam_model']} {K[0,0]} {K[1,1]} {K[0,2]} {K[1,2]}") | |
| if __name__ == "__main__": | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("calibration_yaml", help="Path to the calibration YAML") | |
| parser.add_argument("camera_name", help="camera_name") | |
| args = parser.parse_args() | |
| get_camera_intrinsics(args.calibration_yaml, args.camera_name) |