TensorFlow学习之 图像预处理

 1 import tensorflow as tf  2 import matplotlib.pyplot as plt  3 
 4 image_raw_data = tf.gfile.GFile("./picture.jpg", "rb").read()  5 with tf.Session() as sess:  6     """
 7  图像编码解码处理  8     """
 9     # 解码过程
 10     img_data = tf.image.decode_jpeg(image_raw_data)  11     print(img_data.eval())  12 
 13     # 编码过程
 14     encoded_image = tf.image.encode_jpeg(img_data)  15     with tf.gfile.GFile('./output.jpg', 'wb') as f:  16  f.write(encoded_image.eval())  17 
 18     """
 19  图像大小调整  20     """
 21     # 将图片数据转化为实数类型,将0-255的像素值转化为0.0-1.0之间的实数
 22     img_data = tf.image.convert_image_dtype(img_data, dtype=tf.float32)  23 
 24     # 第一个参数:原始图像;第二个参数:调整后的图像大小;第三个参数:method参数给出调整图像大小的算法
 25     resized = tf.image.resize_images(img_data, [300, 300], method=0)  26 
 27     # 目标尺寸小于原始尺寸,居中截取;否者填充
 28     croped = tf.image.resize_image_with_crop_or_pad(img_data, 500, 300)  29 
 30  plt.figure()  31     plt.subplot(2, 2, 1)  32  plt.imshow(img_data.eval())  33     plt.subplot(2, 2, 2)  34  plt.imshow(resized.eval())  35     plt.subplot(2, 1, 2)  36  plt.imshow(croped.eval())  37 
 38     """
 39  图像翻转  40     """
 41     # 上下翻转
 42     flipped_up_down = tf.image.flip_up_down(img_data)  43     # 50%的几率上下翻转
 44     flipped1 = tf.image.random_flip_up_down(img_data)  45 
 46     # 左右翻转
 47     flipped_left_right = tf.image.flip_left_right(img_data)  48     # 50%的几率左右翻转
 49     flipped2 = tf.image.random_flip_left_right(img_data)  50 
 51     # 沿对角线高翻转
 52     transpose_image = tf.image.transpose_image(img_data)  53 
 54  plt.figure()  55     plt.subplot(2, 2, 1)  56  plt.imshow(flipped_up_down.eval())  57     plt.subplot(2, 2, 2)  58  plt.imshow(flipped_left_right.eval())  59     plt.subplot(2, 2, 3)  60  plt.imshow(transpose_image.eval())  61     plt.subplot(2, 2, 4)  62  plt.imshow(flipped2.eval())  63 
 64     """
 65  图像色彩调整  66     """
 67     # 亮度 -0.5
 68     adjusted = tf.image.adjust_brightness(img_data, -0.5)  69     # 将其值截取在0.0-1.0之间,防止像素实数值超出0.0-1.0的范围
 70     adjusted_down = tf.clip_by_value(adjusted, 0.0, 1.0)  71     # 亮度 +0.5
 72     adjusted_up = tf.image.adjust_brightness(img_data, 0.5)  73     # 在[-max_delta, max_delta]的范围之间随机调整图像亮度
 74     adjusted_random = tf.image.random_brightness(img_data, 0.2)  75 
 76     # 对比度 x0.5
 77     adjusted1 = tf.image.adjust_contrast(img_data, 0.5)  78     # 对比度 增长5倍
 79     adjusted2 = tf.image.adjust_contrast(img_data, 5)  80     # 在[lower, upper]的范围内随机调整图像的对比度
 81     adjusted3 = tf.image.random_contrast(img_data, 2, 4)  82 
 83     # 色相 +0.6
 84     adjusted_hue1 = tf.image.adjust_hue(img_data, 0.6)  85     # 色相 -0.6
 86     adjusted_hue2 = tf.image.adjust_hue(img_data, -0.6)  87     # 在[-max_delta, max_delta]的范围内随机调整图像的色相,max_delta取值范围[0, 0.5]
 88     adjusted_hue3 = tf.image.random_hue(img_data, 0.3)  89 
 90     # 饱和度 -5
 91     adjust_saturation1 = tf.image.adjust_saturation(img_data, -5)  92     # 饱和度 +5
 93     adjust_saturation2 = tf.image.adjust_saturation(img_data, 5)  94     # 在[lower, upper]的范围之间随机调整图像的饱和度,lower必须是非负值
 95     adjust_saturation3 = tf.image.random_saturation(img_data, 0, 4)  96  plt.figure()  97     plt.subplot(4, 2, 1)  98  plt.imshow(adjusted_down.eval())  99     plt.subplot(4, 2, 2) 100  plt.imshow(adjusted_up.eval()) 101     plt.subplot(4, 2, 3) 102  plt.imshow(adjusted1.eval()) 103     plt.subplot(4, 2, 4) 104  plt.imshow(adjusted2.eval()) 105     plt.subplot(4, 2, 5) 106  plt.imshow(adjusted_hue1.eval()) 107     plt.subplot(4, 2, 6) 108  plt.imshow(adjusted_hue2.eval()) 109     plt.subplot(4, 2, 7) 110  plt.imshow(adjust_saturation1.eval()) 111     plt.subplot(4, 2, 8) 112  plt.imshow(adjust_saturation2.eval()) 113 
114     # 图像数值标准化,均值为0,方差为1
115     adjust_standardization = tf.image.per_image_standardization(img_data) 116  plt.figure() 117  plt.imshow(adjust_standardization.eval()) 118 
119     plt.show()
相关文章
相关标签/搜索