def __init__(self, config): """ 文本是被数据增广类 :param config: 配置,主要用到的字段有 input_h, mean, std """ self.config = config self.random_contrast = RandomContrast(probability=0.3) self.random_brightness = RandomBrightness(probability=0.3) self.random_sharpness = RandomSharpness(probability=0.3) self.compress = Compress(probability=0.3) self.rotate = Rotate(probability=0.5) self.blur = Blur(probability=0.3) self.motion_blur = MotionBlur(probability=0.3) self.salt = Salt(probability=0.3) self.adjust_resolution = AdjustResolution(probability=0.3) self.random_line = RandomLine(probability=0.3) self.random_contrast.setparam() self.random_brightness.setparam() self.random_sharpness.setparam() self.compress.setparam() self.rotate.setparam() self.blur.setparam() self.motion_blur.setparam() self.salt.setparam() self.adjust_resolution.setparam()
class RecDataProcess: def __init__(self, config): self.config = config self.random_contrast = RandomContrast(probability=0.3) self.random_brightness = RandomBrightness(probability=0.3) self.random_sharpness = RandomSharpness(probability=0.3) self.compress = Compress(probability=0.3) self.rotate = Rotate(probability=0.5) self.blur = Blur(probability=0.3) self.motion_blur = MotionBlur(probability=0.3) self.salt = Salt(probability=0.3) self.adjust_resolution = AdjustResolution(probability=0.3) self.random_line = RandomLine(probability=0.3) self.random_contrast.setparam() self.random_brightness.setparam() self.random_sharpness.setparam() self.compress.setparam() self.rotate.setparam() self.blur.setparam() self.motion_blur.setparam() self.salt.setparam() self.adjust_resolution.setparam() def aug_img(self, img): img = self.random_contrast.process(img) img = self.random_brightness.process(img) img = self.random_sharpness.process(img) img = self.random_line.process(img) if img.size[1] >= 32: img = self.compress.process(img) img = self.adjust_resolution.process(img) img = self.motion_blur.process(img) img = self.blur.process(img) img = self.rotate.process(img) img = self.salt.process(img) return img def resize_with_specific_height(self, _img): """ 将图像resize到指定高度 :param _img: 待resize的图像 :return: resize完成的图像 """ resize_ratio = self.config.input_h / _img.shape[0] return cv2.resize(_img, (0, 0), fx=resize_ratio, fy=resize_ratio, interpolation=cv2.INTER_LINEAR) def normalize_img(self, _img): """ 根据配置的均值和标准差进行归一化 :param _img: 待归一化的图像 :return: 归一化后的图像 """ return (_img.astype(np.float32) / 255 - self.config.mean) / self.config.std def width_pad_img(self, _img, _target_width, _pad_value=0): """ 将图像进行高度不变,宽度的调整的pad :param _img: 待pad的图像 :param _target_width: 目标宽度 :param _pad_value: pad的值 :return: pad完成后的图像 """ _height, _width, _channels = _img.shape to_return_img = np.ones([_height, _target_width, _channels ]) * _pad_value to_return_img[:_height, :_width, :] = _img return to_return_img