Spaces:
Paused
Paused
import numpy as np | |
from glob import glob | |
import random | |
import os | |
import pdb | |
random.seed(7777) | |
class SampleManualCam: | |
def __init__( | |
self, | |
pose_type = 'manual', | |
root_path = '../assets/manual_poses', | |
): | |
self.root_path = root_path | |
if pose_type == 'manual': | |
self.MANUAL_CAM = ['I', 'D', 'L', 'O', 'R', 'U'] | |
elif pose_type == 're10k': | |
self.RE10K_CAM = os.listdir(root_path) | |
# self.pose_path = glob(root_path, "*.txt") | |
self.pose_type = pose_type | |
def sample(self, order=None, name=None): | |
# Sample camera parameters (W2C) | |
if self.pose_type == 'manual': | |
if name is not None: | |
assert name in self.MANUAL_CAM | |
cam_name = name | |
elif order is not None: | |
order = order % len(self.MANUAL_CAM) | |
cam_name = self.MANUAL_CAM[order] | |
else: | |
cam_name = random.choice(self.MANUAL_CAM) | |
path = os.path.join(self.root_path, f"camera_{cam_name}.txt") | |
elif self.pose_type == 're10k': | |
if name is not None: | |
assert name in self.RE10K_CAM | |
cam_name = name | |
elif order is not None: | |
order = order % len(self.RE10K_CAM) | |
cam_name = self.RE10K_CAM[order] | |
else: | |
cam_name = random.choice(self.RE10K_CAM) | |
path = os.path.join(self.root_path, cam_name) | |
with open(path, 'r') as f: | |
poses = f.readlines() | |
poses = [pose.strip().split(' ') for pose in poses] | |
poses = [[float(x) for x in pose] for pose in poses] | |
return poses, cam_name |