1. 程式人生 > 實用技巧 >深度學習 資料集增強-程式碼

深度學習 資料集增強-程式碼

"""
增強資料集
"""
from PIL import Image
from PIL import ImageEnhance
import os
import cv2
import numpy as np


def flip(root_path, img_name):  # 翻轉影象
    img = Image.open(os.path.join(root_path, img_name))
    filp_img = img.transpose(Image.FLIP_LEFT_RIGHT)
    # filp_img.save(os.path.join(root_path,img_name.split('.')[0] + '_flip.jpg'))
return filp_img def rotation(root_path, img_name): img = Image.open(os.path.join(root_path, img_name)) rotation_img = img.rotate(20) # 旋轉角度 # rotation_img.save(os.path.join(root_path,img_name.split('.')[0] + '_rotation.jpg')) return rotation_img def randomColor(root_path, img_name): #
隨機顏色 """ 對影象進行顏色抖動 :param image: PIL的影象image :return: 有顏色色差的影象image """ image = Image.open(os.path.join(root_path, img_name)) random_factor = np.random.randint(0, 31) / 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. # 隨機因子 contrast_image = ImageEnhance.Contrast(brightness_image).enhance( random_factor) # 調整影象對比度 random_factor = np.random.randint(0, 31) / 10. # 隨機因子 return ImageEnhance.Sharpness(contrast_image).enhance( random_factor) # 調整影象銳度 def contrastEnhancement(root_path, img_name): # 對比度增強 image = Image.open(os.path.join(root_path, img_name)) enh_con = ImageEnhance.Contrast(image) contrast = 1.5 image_contrasted = enh_con.enhance(contrast) return image_contrasted def brightnessEnhancement(root_path, img_name): # 亮度增強 image = Image.open(os.path.join(root_path, img_name)) enh_bri = ImageEnhance.Brightness(image) brightness = 1.5 image_brightened = enh_bri.enhance(brightness) return image_brightened def colorEnhancement(root_path, img_name): # 顏色增強 image = Image.open(os.path.join(root_path, img_name)) enh_col = ImageEnhance.Color(image) color = 1.5 image_colored = enh_col.enhance(color) return image_colored def main(): imageDir = r"" # 要改變的圖片的路徑資料夾 maskDir = r"" saveDir = r"" # 要儲存的圖片的路徑資料夾 # 資料集-image增強 # for name in os.listdir(imageDir): # saveName = name[:-4] + "id.jpg" # image = Image.open(os.path.join(imageDir, name)) # image.save(os.path.join(saveDir, 'id', saveName)) # # saveName = name[:-4] + "be.jpg" # saveImage = brightnessEnhancement(imageDir, name) # saveImage.save(os.path.join(saveDir, 'be', saveName)) # # saveName = name[:-4] + "fl.jpg" # saveImage = flip(imageDir, name) # saveImage.save(os.path.join(saveDir,'fl', saveName)) # # saveName = name[:-4] + "ro.jpg" # saveImage = rotation(imageDir, name) # saveImage.save(os.path.join(saveDir,'ro', saveName)) # # saveName = name[:-4] + "co.jpg" # saveImage = colorEnhancement(imageDir, name) # saveImage.save(os.path.join(saveDir, 'co', saveName)) # # saveName = name[:-4] + "ra.jpg" # saveImage = randomColor(imageDir, name) # saveImage.save(os.path.join(saveDir, 'ra', saveName)) # 資料集-mask增強 for part in os.listdir(maskDir): part_path = os.path.join(maskDir, part) for name in os.listdir(part_path): # 原圖 addname = 'yuan' image = Image.open(os.path.join(part_path, name)) image.save(os.path.join(saveDir, part, addname, name)) # 翻轉圖 addname = 'flip' saveImage = flip(part_path, name) saveImage.save(os.path.join(saveDir, part, addname, name)) # 轉動角度 addname = 'rotation' saveImage = rotation(part_path, name) saveImage.save(os.path.join(saveDir, part, addname, name)) if __name__ == '__main__': main()