|
- """Utility classes and functions."""
- import time
- import cv2 as cv
- import torch
- import numpy as np
- from PIL import Image
-
-
- class Timer(object):
- """Timer."""
-
- def __init__(self):
- self.start_ticking = False
- self.start = 0.
- self.count = 0
- self.total_time = 0.
-
- def tic(self):
- """Start timer."""
- self.start = time.time()
- self.start_ticking = True
-
- def toc(self):
- """End timer."""
- duration = time.time() - self.start
- self.start_ticking = False
- print("Time elapsed:", duration, "s.")
- self.count += 1
- self.total_time += duration
-
- def calc_average_time(self):
- """Calculate average elapsed time of timer."""
- if self.count == 0:
- return 0.
- return self.total_time / self.count
-
-
- def tensor2array(image_tensor, imtype=np.uint8):
- """
- Convert float CxHxW image tensor between [0, 1] to HxWxC numpy ndarray
- between [0, 255]
- """
- assert isinstance(image_tensor, torch.Tensor)
- image_numpy = (image_tensor.detach().cpu().numpy()) * 255.0
- image_numpy = np.transpose(image_numpy, (1, 2, 0)).astype(imtype)
- return image_numpy
-
-
- def tensor2im(image_tensor, imtype=np.uint8):
- """Convert float CxHxW BGR image tensor to RGB PIL Image"""
- image_numpy = tensor2array(image_tensor, imtype)
- image_numpy = cv.cvtColor(image_numpy, cv.COLOR_BGR2RGB)
- return Image.fromarray(image_numpy)
|