|
|
|
|
|
|
|
|
|
|
|
|
|
import collections |
|
import numpy as numpy |
|
import cv2 as cv |
|
|
|
class Compose: |
|
def __init__(self, transforms=[]): |
|
self.transforms = transforms |
|
|
|
def __call__(self, img): |
|
for t in self.transforms: |
|
img = t(img) |
|
return img |
|
|
|
class Resize: |
|
def __init__(self, size, interpolation=cv.INTER_LINEAR): |
|
self.size = size |
|
self.interpolation = interpolation |
|
|
|
def __call__(self, img): |
|
return cv.resize(img, self.size) |
|
|
|
class CenterCrop: |
|
def __init__(self, size): |
|
self.size = size |
|
|
|
def __call__(self, img): |
|
h, w, _ = img.shape |
|
ws = int(w / 2 - self.size[0] / 2) |
|
hs = int(h / 2 - self.size[1] / 2) |
|
return img[hs:hs+self.size[1], ws:ws+self.size[0], :] |
|
|
|
class Normalize: |
|
def __init__(self, mean=None, std=None): |
|
self.mean = mean |
|
self.std = std |
|
|
|
def __call__(self, img): |
|
img = img.astype("float32") |
|
if self.mean is not None: |
|
img[:, :, 0] = img[:, :, 0] - self.mean[0] |
|
img[:, :, 1] = img[:, :, 1] - self.mean[1] |
|
img[:, :, 2] = img[:, :, 2] - self.mean[2] |
|
if self.std is not None: |
|
img[:, :, 0] = img[:, :, 0] / self.std[0] |
|
img[:, :, 1] = img[:, :, 1] / self.std[1] |
|
img[:, :, 2] = img[:, :, 2] / self.std[2] |
|
return img |
|
|
|
class ColorConvert: |
|
def __init__(self, ctype): |
|
self.ctype = ctype |
|
|
|
def __call__(self, img): |
|
return cv.cvtColor(img, self.ctype) |
|
|