使用tensorflow对图像数据增强和增广

使用tensorflow

分别对数据集中图像使用翻转(垂直和左右)和旋转(90度的倍数)

import tensorflow as tf
import os

def trans(img, img_data, sav):
    #翻转操作是镜像的,旋转是非镜像的
    #垂直翻转
    flipped_up_down = tf.image.flip_up_down(img_data)
    #水平翻转
    flipped_left_right = tf.image.flip_left_right(img_data)
    #以90度的倍数进行旋转
    rotate_90 = tf.image.rot90(img_data, k=1)
    rotate_180 = tf.image.rot90(img_data, k=2)
    rotate_270 = tf.image.rot90(img_data, k=3)
    #编码
    encoded_image_u = tf.image.encode_jpeg(flipped_up_down)
    encoded_image_l = tf.image.encode_jpeg(flipped_left_right)
    encoded_image_r9 = tf.image.encode_jpeg(rotate_90)
    encoded_image_r18 = tf.image.encode_jpeg(rotate_180)
    encoded_image_r27 = tf.image.encode_jpeg(rotate_270)
    with tf.Session() as sess:
        u, l, r9, r18, r27 = sess.run([encoded_image_u, encoded_image_l, encoded_image_r9, 
                encoded_image_r18, encoded_image_r27])
        #保存图像
        f = tf.gfile.GFile(os.path.join(sav, (img[:-4] + '_aug' + '1' + '.jpg')), 'wb')
        f.write(u)
        f = tf.gfile.GFile(os.path.join(sav, (img[:-4] + '_aug' + '2' + '.jpg')), 'wb')
        f.write(l)
        f = tf.gfile.GFile(os.path.join(sav, (img[:-4] + '_aug' + '3' + '.jpg')), 'wb')
        f.write(r9)
        f = tf.gfile.GFile(os.path.join(sav, (img[:-4] + '_aug' + '4' + '.jpg')), 'wb')
        f.write(r18)
        f = tf.gfile.GFile(os.path.join(sav, (img[:-4] + '_aug' + '5' + '.jpg')), 'wb')
        f.write(r27)
    

img_dir = 'F:/数据集/crops/7/'
sav_dir = 'F:/数据集/crops_aug/7/'

#获取图像文件列表
img_list = os.listdir(img_dir)
#遍历图像文件
for img in img_list:
    print(os.path.join(img_dir, img))
    #读取图像数据,以非UTF-8的格式读取,'r'-UTF-8格式读取,'rb'-非UTF-8格式读取
    img_raw_data = tf.gfile.FastGFile(os.path.join(img_dir, img), 'rb').read()
    #格式转换
    img_data = tf.image.decode_jpeg(img_raw_data)
    #img_data = tf.image.convert_image_dtype(img_data, dtype=tf.float32)
    #数据增强和扩增
    trans(img, img_data, sav_dir)

 

你可能感兴趣的:(tensorflow,数据增强)