|
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_type = pose_type |
|
|
|
def sample(self, order=None, name=None): |
|
|
|
|
|
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 |