else: print('Please specify the dataset source') exit(0) # Create 2D pose file print('') print('Computing ground-truth 2D poses...') dataset = Human36mDataset(output_filename + '.npz') output_2d_poses = {} for subject in dataset.subjects(): output_2d_poses[subject] = {} for action in dataset[subject].keys(): anim = dataset[subject][action] positions_2d = [] for cam in anim['cameras']: pos_3d = world_to_camera(anim['positions'], R=cam['orientation'], t=cam['translation']) pos_2d = wrap(project_to_2d, pos_3d, cam['intrinsic'], unsqueeze=True) pos_2d_pixel_space = image_coordinates(pos_2d, w=cam['res_w'], h=cam['res_h']) positions_2d.append(pos_2d_pixel_space.astype('float32')) output_2d_poses[subject][action] = positions_2d print('Saving...') metadata = { 'num_joints': dataset.skeleton().num_joints(), 'keypoints_symmetry': [dataset.skeleton().joints_left(), dataset.skeleton().joints_right()] } np.savez_compressed(output_filename_2d, positions_2d=output_2d_poses, metadata=metadata) print('Done.')
# Create 2D pose file print('') print('Computing ground-truth 2D poses...') dataset = Human36mDataset(output_filename + '.npz') output_2d_poses = {} for subject in dataset.subjects(): output_2d_poses[subject] = {} for action in dataset[subject].keys(): anim = dataset[subject][action] positions_2d = [] for cam in anim['cameras']: pos_3d = world_to_camera(anim['positions'], R=cam['orientation'], t=cam['translation']) pos_2d = wrap(project_to_2d, True, pos_3d, cam['intrinsic']) pos_2d_pixel_space = image_coordinates(pos_2d, w=cam['res_w'], h=cam['res_h']) positions_2d.append(pos_2d_pixel_space.astype('float32')) output_2d_poses[subject][action] = positions_2d print('Saving...') metadata = { 'num_joints': dataset.skeleton().num_joints(), 'keypoints_symmetry': [dataset.skeleton().joints_left(), dataset.skeleton().joints_right()] } np.savez_compressed(output_filename_2d,
def camera_to_world(X, R, t): return wrap(qrot, np.tile(R, (*X.shape[:-1], 1)), X) + t
def world_to_camera(X, R, t): Rt = wrap(qinverse, R) # Invert rotation return wrap(qrot, np.tile(Rt, (*X.shape[:-1], 1)), X - t) # Rotate and translate
def camera_to_world(X, R, t): return wrap(qrot, False, np.tile(R, X.shape[:-1] + (1, )), X) + t
def camera_to_world(X, R, t): return wrap(qrot, np.tile(R, (*X.shape[:-1], 1)), X) + t
def world_to_camera(X, R, t): Rt = wrap(qinverse, R) # Invert rotation return wrap(qrot, np.tile(Rt, (*X.shape[:-1], 1)), X - t) # Rotate and translate