数据增强的目的是为了增加输入图像的可变性,从而使所设计的目标检测模型对在不同环境下获得的图像具有更高的鲁棒性。
简单贴点自己整理的数据增强代码。
import os
import cv2
import numpy as np
from PIL import Image,ImageEnhance
def enhance(mode,image,brightness=1,sharpness=1,color=1,contrast=1):
'''
parameter:
mode:选择需要的形式
image:读取的数组形式的图片
brightness:传入的亮度的数值,默认为1
sharpness:传入的锐化的数值,默认为1
color:传入的对色度的数值,默认为1
contrast:传入的对比度的数值,默认为1
return:
数组
'''
if mode == '亮度':
img = Image.fromarray(image) #数组转PIL image形式
enh_bri = ImageEnhance.Brightness(img) #增强(或减弱)图像的亮度
image_brightened = enh_bri.enhance(brightness)
img = np.array(image_brightened)
elif mode == '浮雕':
kernel = np.array([[-2, -1, 0], [-1, 1, 1], [0, 1, 2]], np.float32)
img = cv2.filter2D(image, -1, kernel = kernel)
elif mode == '模糊':
kernel = np.array([[0.0625, 0.125, 0.0625], [0.125, 0.25, 0.125], [0.0625, 0.125,0.125]], np.float32)
img = cv2.filter2D(image, -1, kernel=kernel)
elif mode == '锐化':
img = Image.fromarray(image)
enh_sha = ImageEnhance.Sharpness(img) #增强(或减弱)图像的锐化度
image_sharped = enh_sha.enhance(sharpness)
img = np.array(image_sharped)
elif mode == '色度':
img = Image.fromarray(image)
enh_col = ImageEnhance.Color(img) #增强(或减弱)图像的色度
image_colored = enh_col.enhance(color)
img = np.array(image_colored)
elif mode == '对比度':
img = Image.fromarray(image)
enh_col = ImageEnhance.Contrast(img) #增强(或减弱)图像的对比度
image_colored = enh_col.enhance(contrast)
img = np.array(image_colored)
else:
print('error!')
return img
if __name__ == '__main__':
path = '图片路径'
mode = '亮度'
im = cv2.imread(path)
im = enhance(mode,im,brightness=1.8)
cv2.imshow('',im)
cv2.waitKey()
cv2.destroyAllWindows()
也可以自己选择保存增强后的图片,使用cv2.imwrite()就可以了,如果要做多张图片的数据增强,用os.listdir()遍历即可。