NeuralBody / lib /utils /base_utils.py
pengsida
initial commit
1ba539f
raw
history blame
1.27 kB
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
def write_K_pose_inf(K, poses, img_root):
K = K.copy()
K[:2] = K[:2] * 8
K_inf = os.path.join(img_root, 'Intrinsic.inf')
os.system('mkdir -p {}'.format(os.path.dirname(K_inf)))
with open(K_inf, 'w') as f:
for i in range(len(poses)):
f.write('%d\n'%i)
f.write('%f %f %f\n %f %f %f\n %f %f %f\n' % tuple(K.reshape(9).tolist()))
f.write('\n')
pose_inf = os.path.join(img_root, 'CamPose.inf')
with open(pose_inf, 'w') as f:
for pose in poses:
pose = np.linalg.inv(pose)
A = pose[0:3,:]
tmp = np.concatenate([A[0:3,2].T, A[0:3,0].T,A[0:3,1].T,A[0:3,3].T])
f.write('%f %f %f %f %f %f %f %f %f %f %f %f\n' % tuple(tmp.tolist()))