mhr_recognize_classify_app / mhr /custom_transform.py
miojizzy's picture
Upload 9 files
a22da3a
from mhr.common import *
class PIL2CV(torch.nn.Module):
def __init__(self):
super().__init__()
def forward(self, img):
return cv.cvtColor(np.asarray(img), cv.COLOR_RGB2BGR)
class CV2PIL(torch.nn.Module):
def __init__(self):
super().__init__()
def forward(self, img):
return Image.fromarray(cv.cvtColor(img, cv.COLOR_BGR2RGB))
class Tensor2CV(torch.nn.Module):
def __init__(self):
super().__init__()
def forward(self, img):
if len(img.shape) == 4:
img = img.squeeze(0)
img = img.mul_(255).add_(0.5).clamp_(0, 255).permute(1, 2, 0).type(torch.uint8).numpy()
img = cv.cvtColor(img, cv.COLOR_RGB2BGR)
return img
class CvtColor(torch.nn.Module):
def __init__(self, cvt):
super().__init__()
self._cvt = cvt
def forward(self, img):
return cv.cvtColor(img, self._cvt)
class GaussianBlur(torch.nn.Module):
def __init__(self, kernel, sigma):
super().__init__()
self._kernel = kernel
self._sigma = sigma
def forward(self, img):
return cv.GaussianBlur(img, self._kernel, self._sigma)
class EqualizeHist(torch.nn.Module):
def __init__(self):
super().__init__()
def forward(self, img):
return cv.equalizeHist(img)
class SobelBitwiseOrXY(torch.nn.Module):
def __init__(self):
super().__init__()
def forward(self, img):
sobelx = cv.Sobel(img, cv.CV_64F, 1, 0)
sobely = cv.Sobel(img, cv.CV_64F, 0, 1)
sobelx = cv.convertScaleAbs(sobelx)
sobely = cv.convertScaleAbs(sobely)
return cv.bitwise_or(sobelx, sobely)
class Threshold(torch.nn.Module):
def __init__(self, thresh, maxval, tt):
super().__init__()
self._thresh = thresh
self._maxval = maxval
self._tt = tt
def forward(self, img):
_, tmp = cv.threshold(img, self._thresh, self._maxval, self._tt)
return tmp
class Cut(torch.nn.Module):
def __init__(self, point, offsetx, offsety):
super().__init__()
self._p = point
self._offsetx = offsetx
self._offsety = offsety
def forward(self, img):
p = self._p
return img[p[0]:p[0]+self._offsetx, p[1]:p[1]+self._offsety ]
class TensorCut(torch.nn.Module):
def __init__(self, point, offsetx, offsety):
super().__init__()
self._p = point
self._offsetx = offsetx
self._offsety = offsety
def forward(self, img):
p = self._p
return img[:, p[0]:p[0]+self._offsetx, p[1]:p[1]+self._offsety ]