pytorch,tensor2im,im2tensor
def tensor2im(image_tensor, imtype=np.uint8, normalize=True): image_numpy = image_tensor.cpu().float().detach().numpy() if normalize: image_numpy = (image_numpy+1)*255.0*0.5 else: image_numpy = (image_numpy+1)*255.0 image_numpy = np.clip(image_numpy, 0, 255) blank_image = np.zeros((image_tensor.shape[1],image_tensor.shape[2],image_tensor.shape[0]), np.uint8) if image_tensor.shape[0] == 3: blank_image[:,:,0]=image_numpy[2,:,:] blank_image[:,:,1]=image_numpy[1,:,:] blank_image[:,:,2]=image_numpy[0,:,:] else: blank_image[:,:,:]=image_numpy[:,:,:] return blank_image def im2tensor(image_numpy, normalize=True): if normalize: image_numpy = (image_numpy/255.0)*2.0-1.0 else: image_numpy = image_numpy/255.0 image_numpy = np.clip(image_numpy, -1, 1) blank_image = np.zeros((image_numpy.shape[2],image_numpy.shape[0],image_numpy.shape[1])) if image_numpy.shape[2] == 3: blank_image[2,:,:]=image_numpy[:,:,0] blank_image[1,:,:]=image_numpy[:,:,1] blank_image[0,:,:]=image_numpy[:,:,2] else: blank_image[:,:,:]=image_numpy[:,:,:] image_tensor = torch.Tensor(blank_image) return image_tensor
调用:
f_fake_image = tensor2im(fake_image[ii])
new_fake_image[ii]=im2tensor(f_fake_image_new, normalize=True)