# -*- coding:utf-8 -*-from PIL import Image, ImageEnhanceimport numpy as npimport randomimport cv2def randomColor(image): """ 对图像进行色彩抖动 :param image: PIL的图像image :return: 有色彩色差的图像image """ image = Image.fromarray(np.uint8(image)) random_factor = np.random.randint(0, 21) / 10. # 随机因子 color_image = ImageEnhance.Color(image).enhance(random_factor) # 调整图像的饱和度 random_factor = np.random.randint(10, 21) / 10. # 随机因子 brightness_image = ImageEnhance.Brightness(color_image).enhance(random_factor) # 调整图像的亮度 random_factor = np.random.randint(10, 21) / 10. # 随机因1子 contrast_image = ImageEnhance.Contrast(brightness_image).enhance(random_factor) # 调整图像对比度 random_factor = np.random.randint(0, 21) / 10. # 随机因子 sharp_image = ImageEnhance.Sharpness(contrast_image).enhance(random_factor) # 调整图像锐度 final = np.asarray(sharp_image) return finaldef randomGaussian(img, mean=0.2, sigma=0.5): """ 对图像进行高斯噪声解决 :param image: :return: """ def gaussianNoisy(im, mean=0.2, sigma=0.5): """ 对图像做高斯乐音解决 :param im: 单通道图像 :param mean: 偏移量 :param sigma: 标准差 :return: """ for _i in range(len(im)): im[_i] += random.gauss(mean, sigma) return im img.flags.writeable = True # 将数组改为读写模式 width, height = img.shape[:2] img_r = gaussianNoisy(img[:, :, 0].flatten(), mean, sigma) img_g = gaussianNoisy(img[:, :, 1].flatten(), mean, sigma) img_b = gaussianNoisy(img[:, :, 2].flatten(), mean, sigma) img[:, :, 0] = img_r.reshape([width, height]) img[:, :, 1] = img_g.reshape([width, height]) img[:, :, 2] = img_b.reshape([width, height]) return img# 均值滤波def ranndom_blur(img, ksize=(3, 3)): img_blur = cv2.blur(src=img, ksize=ksize) return img_blurif __name__ == '__main__': pic = cv2.imread('./test.jpg') a = randomColor(pic) cv2.imwrite('randomColor.jpg', a) b = randomGaussian(pic) cv2.imwrite('randomGaussian.jpg', b) c = ranndom_blur(pic) cv2.imwrite('ranndom_blur.jpg', c)