class GenerateReprojectedImages(object): def __init__(self, name, scale, xrot=0.0, yrot=0.0, fov=90.0, aspect=1.0): self.name = "reproj_" + name self.scale = scale self.proj = Projection(xrot=xrot, yrot=yrot, fov=fov, aspect=aspect) def __call__(self, sample): input_dim = (sample['generated'].shape[1], sample['generated'].shape[0]) output_dim = (input_dim[0] * self.scale, input_dim[1] * self.scale) phi, theta = self.proj.generate_map(output_dim=output_dim, input_dim=input_dim) interpolation = cv2.INTER_AREA remap = cv2.remap(sample['generated'], phi, theta, interpolation=interpolation, borderValue=0, borderMode=cv2.BORDER_CONSTANT) sample[self.name] = remap return sample