一、图片增强
当我们训练深度学习模型的时候,你的图片数据集可能数量太少或者是有的类别数量过少,你就可以通过对图片进行裁剪、旋转和放缩来完成图片数量的扩充。PS:参考的那篇文章找不到链接了,实在不好意思,无法给那位作者引流。如有读者发现,可以在下边留言。
二、图片裁剪
# -*- coding: utf-8 -*-
"""
Created on Sun May 8 10:13:57 2022
图片裁剪
@author: Lcy
"""
from PIL import Image
def cropimg(inputimg,outimg):
im = Image.open(inputimg)
# 图片的宽度和高度
img_size = im.size
print("图片宽度和高度分别是{}".format(img_size))
'''
裁剪:传入一个元组作为参数
元组里的元素分别是:(距离图片左边界距离x, 距离图片上边界距离y,距离图片左边界距离+裁剪框宽度x+w,距离图片上边界距离+裁剪框高度y+h)
'''
# 截取图片中一块宽和高都是250的
x = 0
y = 10
w = 600
h = 300
region = im.crop((x, y, x + w, y + h))
region.save(outimg)
if __name__ == "__main__":
inputpath = "C:/Users/Lcy/data/train/processing/label2/"
outpath = "C:/Users/Lcy/data/train/processing/croplabel1/"
for i in range(1, 800):
tmpin = inputpath+'T'+str(i)+'.jpg'
tmpout = outpath+'TC'+str(i)+'.jpg'
cropimg(tmpin, tmpout)
print('成功裁剪第' + str(i) + '张图片')
三、图片放缩
# -*- coding: utf-8 -*-
"""
Created on Sun May 8 10:04:18 2022
图片放缩
@author: Lcy
"""
# -*-coding:utf-8-*-
from PIL import Image
import random
def resizeimg(inputimg,outimg):
img1 = Image.open(inputimg)
ronum1 = random.randint(200, 600)
ronum2 = random.randint(100, 400)
out=img1.resize((ronum1, ronum2),Image.ANTIALIAS)
print("图片宽度和高度分别是{}".format(out.size))
out.save(outimg)
if __name__ == "__main__":
#
inputpath = "C:/Users/Lcy/data/train/processing/label2/"
outpath = "C:/Users/Lcy/data/train/processing/resizelabel1/"
for i in range(1, 800):
tmpin = inputpath+'T'+str(i)+'.jpg'
tmpout = outpath+'Ts'+str(i)+'.jpg'
resizeimg(tmpin, tmpout)
print('成功放缩第' + str(i) + '张图片')
四、图片旋转
# -*- coding: utf-8 -*-
"""
Created on Sun May 8 09:52:33 2022
图片旋转
@author: Lcy
"""
from PIL import Image
import random
def rotateimg(inputimg,outimg):
im = Image.open(inputimg)
# 图片的宽度和高度
img_size = im.size
print("图片宽度和高度分别是{}".format(img_size))
# 旋转图片
# 左旋转90度
ronum = random.uniform(0, 360)
im = im.rotate(ronum)
print("图片宽度和高度分别是{}".format(im.size))
im.save(outimg)
if __name__ == "__main__":
#
inputpath = "C:/Users/Lcy/data/train/processing/label2/"
outpath = "C:/Users/Lcy/data/train/processing/rotatelabel1/"
for i in range(1,800):
tmpin = inputpath+'T'+str(i)+'.jpg'
tmpout = outpath+'Tr'+str(i)+'.jpg'
rotateimg(tmpin, tmpout)
print('成功旋转第'+str(i)+'张图片')