数据扩充,特定方式
# -*- coding: utf-8 -*-
import os
import time
from PIL import Image,ImageChops,ImageEnhance
def image_reversal1(img,savefilepath,save_filename):
""" 左右图像翻转"""
lr=img.transpose(Image.FLIP_LEFT_RIGHT) # 左右翻转
lr.save(savefilepath+save_filename)
def image_reversal2(img,savefilepath,save_filename):
""" 上下图像翻转"""
ud=img.transpose(Image.FLIP_TOP_BOTTOM) # 上下翻转
ud.save(savefilepath+save_filename)
def image_rotation3(img,savefilepath,save_filename):
"""图像旋转"""
out = img.rotate(60) # 旋转60度
out.save(savefilepath+save_filename)
def image_rotation4(img,savefilepath,save_filename):
"""图像旋转"""
out = img.rotate(45) # 旋转45度
out.save(savefilepath+save_filename)
def image_rotation5(img,savefilepath,save_filename):
"""图像旋转"""
out = img.rotate(30) # 旋转30度
out.save(savefilepath+save_filename)
def image_rotation6(img,savefilepath,save_filename):
"""图像旋转"""
out=img.rotate(15) # 旋转15度
out.save(savefilepath+save_filename)
# 定义扩充图片函数
def image_expansion(filepath,savefilepath):
"""
:param filepath: 图片路径
:param savefilepath: 扩充保存图片路径
:param save_prefix: 图片前缀
:return: 图片扩充数据集
"""
for parent, dirnames, filenames in os.walk(filepath):
for filename in filenames:
image_path=filepath+filename
print('正在扩充图片:%s' %filename)
try:
img=Image.open(image_path)
if img.mode == "P":
img = img.convert('RGB')
image_reversal1(img,savefilepath,save_filename=filename[0:4] + '_' + str(1) + '.png') #左右图像翻转
image_reversal2(img, savefilepath, save_filename=filename[0:4] + '_' + str(2) + '.png') #上下图像翻转
image_rotation3(img,savefilepath,save_filename=filename[0:4] + '_' + str(3) + '.png') #旋转60
image_rotation4(img, savefilepath, save_filename=filename[0:4] + '_' + str(4) + '.png') #旋转45
image_rotation5(img, savefilepath, save_filename=filename[0:4] + '_' + str(5) + '.png') #旋转30
image_rotation6(img, savefilepath, save_filename=filename[0:4] + '_' + str(6) + '.png') #旋转15
except Exception as e:
print(e)
pass
if __name__ == '__main__':
# 设置图片路径
filepath = r'C:\Users\123\Desktop\548/'
# 设置扩充保存图片路径
savefilepath = r'C:\Users\123\Desktop\111/'
# 图片命名格式 : 原名 + _ + 1-6
# 1:左右图像翻转 2:上下图像翻转 3:旋转60 4:旋转45 5:旋转30 6:旋转15
time1 = time.time()
image_expansion(filepath, savefilepath)
time2 = time.time()
print('总共耗时:' + str(time2 - time1) + 's')