CV——图像增广

代码目的:

1.实现数据集扩充
2.提高网络泛化能力

代码思路:

1.平移基本提高不了网络泛化能力
2.通过对单张图片实现多方面变化实现数据集不过大扩充
3.通过对图片多方面随机不同度数产生不一样的图片

使用提醒:

1.对所需要的包进行下载
2.改变图片来源路径和存放路径

代码:

# 通过多方面处理图像实现图像增广
from PIL import Image, ImageEnhance
import os
import random

# 1 尺寸
# 2 旋转
# 3 镜像
# 4 亮度
# 5 色度
# 6 对比度
# 7 锐度

# 尺寸调整
def ImgResize(Img, ScaleFactor):
    ImgSize = Img.size  # 获得图像原始尺寸
    NewSize = [int(ImgSize[0] * ScaleFactor), int(ImgSize[1] * ScaleFactor)]  # 获得图像新尺寸,保持长宽比
    Img = Img.resize(NewSize)  # 利用PIL的函数进行图像resize,类似matlab的imresize函数
    return Img
def ImgResizeTo(Img, NewSize):
    Img = Img.resize(NewSize)  # 利用PIL的函数进行图像resize,类似matlab的imresize函数
    return Img

# 旋转
def ImgRotate(Img, Degree):
    return Img.rotate(Degree)  # 利用PIL的函数进行图像旋转,类似matlab imrotate函数

# 利用PIL的函数进行水平以及上下镜像
def ImgLRMirror(Img):
    return Img.transpose(Image.FLIP_LEFT_RIGHT)
def ImgTBMirror(Img):
    return Img.transpose(Image.FLIP_TOP_BOTTOM)

# 亮度,增强因子为1.0是原始图像
def BrightEnchance(Img, factor):
    enh_bri = ImageEnhance.Brightness(Img)
    image_brightened = enh_bri.enhance(factor)
    return image_brightened

# 色度,增强因子为1.0是原始图像
def ColorEnchance(Img, factor):
    enh_col = ImageEnhance.Color(Img)
    image_colored = enh_col.enhance(factor)
    return image_colored

# 对比度,增强因子为1.0是原始图片
def ContrastEnchance(Img, factor):
    enh_con = ImageEnhance.Contrast(Img)
    image_contrasted = enh_con.enhance(factor)
    return image_contrasted

# 锐度,增强因子为1.0是原始图片
def SharpEnchance(Img, factor):
    enh_sha = ImageEnhance.Sharpness(Img)
    image_sharped = enh_sha.enhance(factor)
    return image_sharped



data_path = 'F:\\test_new_img'
video_list = os.listdir(data_path)

save_path = 'F:\\save_new_img'
if not os.path.exists(save_path):  # 文件夹不存在,则创建
    os.mkdir(save_path)

img_list = os.listdir(data_path)
for j in range(0, len(img_list)):
    print(j)
    img_path = os.path.join(data_path, img_list[j])  # 图片文件
    if os.path.isfile(img_path):
        Img = Image.open(img_path)
        # 尺寸
        scale_count= random.choice((0.3, 0.5, 0.7, 1.1, 1.3, 1.5))
        new_img = ImgResize(Img, scale_count)
        # 旋转
        rotate_count = random.choice((45, 90, 135, 180))
        new_img = ImgRotate(new_img, rotate_count)
        # 镜像
        mirror_count = random.randint(0, 1)
        if(mirror_count==0):
            new_img = ImgLRMirror(new_img)
        # 亮度
        bright_count = random.choice((0.3, 0.5, 0.7, 1.1, 1.3, 1.5))
        new_img = BrightEnchance(new_img, bright_count)
        # 色度
        color_count = random.choice((0.3, 0.5, 0.7, 1.1, 1.3, 1.5))
        new_img = ColorEnchance(new_img, color_count)
        # 对比度
        contrast_count = random.choice((0.3, 0.5, 0.7, 1.1, 1.3, 1.5))
        contrast_img1 = ContrastEnchance(Img, contrast_count)
        # 锐度
        sharp_count= random.choice((0.3, 0.5, 0.7, 1.1, 1.3, 1.5))
        sharp_img1 = SharpEnchance(Img, sharp_count)
        # 路径
        save_new_path = os.path.join(save_path, 'new_' + img_list[j])
        # 保存
        new_img.save(save_new_path)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值