ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

7. 进行图片的数据补全和增强(随机亮度,随机饱和度,随机翻转) Image.open(进行图片的读入) 2.ImageEnhance.Brightness(亮度变化) 3.ImageEnhanc

2019-07-04 19:01:15  阅读:173  来源: 互联网

标签:ImageEnhance image 随机 enhance path folder os 图片


1.Image.open(image_path)  进行图片的打开

参数说明:image_path 表示图片的路径

2. ImageEnhance.Brightness(image)  # 进行图片的亮度变化 

enhance_image.enhance(0.3)

参数说明:image表示需要进行亮度变化的图片

3. ImageEnhance.Contrast(image)

enhance_image.enhance(0.2)

参数说明:image表示需要进行饱和度变化的图片

4.enhance_image.transpose(Image.FLIP_LETF_RIGHT) 进行图片的随机翻转

参数说明:enhance_image表示需要翻转的图片, Image.FLIP_LETF_RIGHT表示图片的动作

5.enhance_image.save(image_path) 将图片进行保存

参数说明:image_path表示保存的图片路径

 

对于一个人的图片而言,可能存在每个人的文件夹的图片数量不一致的情况

因此我们对每个人文件夹的图片大于100张小于600张的图片进行补全操作

这里使用随机亮度,随机饱和度,以及随机进行翻转,对图片的数量进行增强

 

代码:

第一步:对数据进行os.listdir(path) 获得当前目录下的文件,一直到单个people的目录下,使用count做图片个数的记录,如果小于min_index 和 大于max_index不做操作,否则进行图片的增加操作

第二步:对图片进行增加操作,循环max_index - len(list),使用需要的图片数目减去当前的图片个数,使用random.randint(0, len()) 获得其中的图片的路径

第三步:循环随机获得的图片路径,使用Image.open() 打开图片,使用ImageEnhance.Bright进行图片的亮度随机

第四步: 使用.save进行数据增强后的图片保存

# -*- coding: utf-8 -*-
''' 
Created on 2019/7/4/0004 14:08
    
@Author : Sheng1994
 '''


import os
import random
from PIL import Image
from PIL import ImageEnhance


def enhance_image(image_path):

    image = Image.open(image_path)

    # 随机亮度
    enhance_image = ImageEnhance.Brightness(image)
    bright = random.uniform(0.2, 1.8)
    enhance_image = enhance_image.enhance(bright)

    # 随机饱和度
    enhance_image = ImageEnhance.Contrast(enhance_image)
    contrast = random.uniform(0.2, 1.8)
    enhance_image = enhance_image.enhance(contrast)

    # 随机左右翻转
    if random.randint(0, 1) == 1:
        enhance_image = enhance_image.transpose(Image.FLIP_LEFT_RIGHT)

    return enhance_image


def add_image(folder_list, folder_path, max_number):

    folder_length = len(folder_list)
    random_folder_list = []

    for _ in range(max_number - folder_length):
        index = random.randint(0, folder_length - 1)
        random_folder_list.append(folder_list[index])

    add_path = 'add'
    full_add_path = folder_path + os.sep + add_path
    if not os.path.exists(full_add_path):
        os.mkdir(full_add_path)

    counter = 0
    for path in random_folder_list:
        new_image = enhance_image(path)
        new_image.save(full_add_path + os.sep + str(counter) + '.jpg')
        counter += 1



def image_augmentation(db_folder, limit_number=100, max_number=600):

    number = 0
    for people_folder in os.listdir(db_folder):
        number += 1

        src_people_path = db_folder + os.sep + people_folder

        counter = 0
        people_folder_list = []
        for vedio_folder in os.listdir(src_people_path):

            src_vedio_path = src_people_path + os.sep + vedio_folder

            for img_file in os.listdir(src_vedio_path):
                counter += 1
                src_img_path = src_vedio_path + os.sep + img_file
                people_folder_list.append(src_img_path)

        if counter < limit_number or counter >= max_number:
            continue
        else:
            add_image(people_folder_list, src_people_path, max_number)

            print(people_folder + ': id--->' + str(number) + '--->OK')




def run():
    random.seed(7)
    db_folder = 'image\\origin'
    image_augmentation(db_folder)

if __name__ == '__main__':
    run()

 

标签:ImageEnhance,image,随机,enhance,path,folder,os,图片
来源: https://www.cnblogs.com/my-love-is-python/p/11134294.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有