import pickle import os import numpy as np def read_pickle(pkl_path): with open(pkl_path, 'rb') as f: return pickle.load(f) def save_pickle(data, pkl_path): os.system('mkdir -p {}'.format(os.path.dirname(pkl_path))) with open(pkl_path, 'wb') as f: pickle.dump(data, f) def project(xyz, K, RT): """ xyz: [N, 3] K: [3, 3] RT: [3, 4] """ xyz = np.dot(xyz, RT[:, :3].T) + RT[:, 3:].T xyz = np.dot(xyz, K.T) xy = xyz[:, :2] / xyz[:, 2:] return xy