Spaces:
Runtime error
Runtime error
import os | |
import sys | |
import cv2 | |
import numpy as np | |
import lib.Perspec2Equirec as P2E | |
class Perspective: | |
def __init__(self, img_array , F_T_P_array ): | |
assert len(img_array)==len(F_T_P_array) | |
self.img_array = img_array | |
self.F_T_P_array = F_T_P_array | |
def GetEquirec(self,height,width): | |
# | |
# THETA is left/right angle, PHI is up/down angle, both in degree | |
# | |
merge_image = np.zeros((height,width,3)) | |
merge_mask = np.zeros((height,width,3)) | |
for img_dir,[F,T,P] in zip (self.img_array,self.F_T_P_array): | |
per = P2E.Perspective(img_dir,F,T,P) # Load equirectangular image | |
img , mask = per.GetEquirec(height,width) # Specify parameters(FOV, theta, phi, height, width) | |
mask = mask.astype(np.float32) | |
img = img.astype(np.float32) | |
weight_mask = np.zeros((img_dir.shape[0],img_dir.shape[1], 3)) | |
w = img_dir.shape[1] | |
weight_mask[:,0:w//2,:] = np.linspace(0,1,w//2)[...,None] | |
weight_mask[:,w//2:,:] = np.linspace(1,0,w//2)[...,None] | |
weight_mask = P2E.Perspective(weight_mask,F,T,P) | |
weight_mask, _ = weight_mask.GetEquirec(height,width) | |
blur = cv2.blur(mask,(5,5)) | |
blur = blur * mask | |
mask = (blur == 1) * blur + (blur != 1) * blur * 0.05 | |
merge_image += img * weight_mask | |
merge_mask += weight_mask | |
merge_image[merge_mask==0] = 255. | |
merge_mask = np.where(merge_mask==0,1,merge_mask) | |
merge_image = (np.divide(merge_image,merge_mask)) | |
return merge_image | |