|
import json |
|
import os |
|
import numpy as np |
|
import quaternion |
|
|
|
class CameraParameterLoader: |
|
def __init__(self): |
|
print('initialize camera parameter lodaer') |
|
|
|
def get_intrinsic(self, path): |
|
with open(os.path.join(path, '_camera_settings.json'), 'r') as f: |
|
param_cam = json.load(f) |
|
param_intrinsic = param_cam['camera_settings'][0]['intrinsic_settings'] |
|
cx = param_intrinsic['cx'] |
|
cy = param_intrinsic['cy'] |
|
fx = param_intrinsic['fx'] |
|
fy = param_intrinsic['fy'] |
|
s = param_intrinsic['s'] |
|
mat_intrinsic = np.array([[fx, s, cx], |
|
[0, fy, cy], |
|
[0, 0, 1]]) |
|
return mat_intrinsic |
|
|
|
def get_extrinsic(self, path): |
|
with open(path, 'r') as f: |
|
param_cam = json.load(f)['camera_data'] |
|
param_translation = param_cam['location_worldframe'] |
|
param_rotation = param_cam['quaternion_xyzw_worldframe'] |
|
|
|
mat_rotation = quaternion.as_rotation_matrix( |
|
np.quaternion(param_rotation[3], param_rotation[0], param_rotation[1], param_rotation[2])) |
|
mat_translation = np.array([[param_translation[0]], [param_translation[1]], [param_translation[2]]]) |
|
mat_extrinsic = np.concatenate( |
|
[np.concatenate([mat_rotation, mat_translation], axis=1), np.array([[0, 0, 0, 1]])], axis=0) |
|
return mat_extrinsic |
|
|