7. 进行图片的数据补全和增强(随机亮度,随机饱和度,随机翻转) Image.open(进行图片的读入) 2.ImageEnhance.Brightness(亮度变化) 3.ImageEnhance.Contrast(饱和度变化) 4.enhance_image.transpose(图片随机翻转) 5.enhance_image.save(进行图片保存)
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()
7. 进行图片的数据补全和增强(随机亮度,随机饱和度,随机翻转) Image.open(进行图片的读入) 2.ImageEnhance.Brightness(亮度变化) 3.ImageEnhance.Contrast(饱和度变化) 4.enhance_image.transpose(图片随机翻转) 5.enhance_image.save(进行图片保存)的更多相关文章
- 【甘道夫】使用HIVE SQL实现推荐系统数据补全
需求 在推荐系统场景中,假设基础行为数据太少,或者过于稀疏,通过推荐算法计算得出的推荐结果非常可能达不到要求的数量. 比方,希望针对每一个item或user推荐20个item,可是通过计算仅仅得到8个 ...
- Missing Data Reconstruction in Remote Sensing Image With a Unified Spatial–Temporal–Spectral Deep Convolutional Neural Network(缺失数据补全,时空谱网络)
摘要 文章针对修复坏波段(AQUA B6),恢复条带损失,恢复云污染提出了一个深度学习网络结构,他说 To date, to the best of our knowledge, no studies ...
- pandas 对数据帧DataFrame中数据的增删、补全及转换操作
1.创建数据帧 import pandas as pd df = pd.DataFrame([[1, 'A', '3%' ], [2, 'B'], [3, 'C', '5%']], index=['r ...
- 使用Linux自定义自动补全命令完善自己的shell脚本
对于Linuxer来说,自动补全是再熟悉不过的一个功能了.当你在命令行敲下部分的命令时,肯定会本能地按下Tab键补全完整的命令,当然除了命令补全之外,还有文件名补全. Bash-completion ...
- Shell脚本中实现自动补全功能
对于Linuxer来说,自动补全是再熟悉不过的一个功能了.当你在命令行敲下部分的命令时,肯定会本能地按下Tab键补全完整的命令,当然除了命令补全之外,还有文件名补全. Bash-completion ...
- 推荐一个Xcode插件: KSImageNamed (自动补全图片文件名称, 并显示图片大小)
http://www.csdn.net/article/2014-05-04/2819586-the-best-xcode-plugins 5. KSImageNamed KSImageNamed是一 ...
- python机器学习实现人脸图片自动补全
人脸自动补全 关注公众号"轻松学编程"了解更多. 1.导包 import matplotlib.pyplot as plt import numpy as np import pa ...
- pgmagick,pil不保存图片并且获取图片二进制数据记录
PIL和pgmagick都是python中图像处理的库,只不过PIL功能更强大 pgmagick和PIL中对数据进行调整后经常需要调用write或者save方法保存图片,然后在读取图片的内容,这样很麻 ...
- jquery 图片比例不变,全屏居中
<!DOCTYPE html> <html> <head> <meta charset="gb2312"> <title> ...
随机推荐
- mac终端解决很多系统自带命令找不到问题
node安装提示npm command not found 1.打开终端 2.输入命令如下: touch~/.bash_profile (创建.bash_profile文件,-表示在-目录下,.表示 ...
- 上传模板到SAP资源库
事物代码:SMW0 -WEB资源库 如果创建后上载本地模板报错,说明没有维护文件类型,需要在导航栏的设置里维护MIME类型添加新的文件后缀名 维护好后再上载模板 ABAP下载模板:以下FORM可以参考 ...
- 常用的商业级和免费开源Web漏洞扫描工具
Scanv 国内著名的商业级在线漏洞扫描.可以长期关注,经常会有免费活动.SCANV具备自动探测发现无主资产.僵尸资产的功能,并对资产进行全生命周期的管理.主动进行网络主机探测.端口探测扫描,硬件特性 ...
- jquery 知识整理
大纲一.jQuery简介 二.jQuery 和Dom关系及jQuery版本 1.jQuery版本 2.jQuery和Dom转换 三.jQuery 选择器 1.1.基本 1.2.层级 2.基本筛选器 3 ...
- Delphi 键盘的编程
- C++ GB2312 和 utf8 在win32下 互转
string ANSItoUTF8(const char* strAnsi) { //获取转换为宽字节后需要的缓冲区大小,创建宽字节缓冲区,936为简体中文GB2312代码页 , NULL, NULL ...
- C++中写文件ofstream 的<< 操作符 与C风格的fwrite 的笔记
在某次工作中,调用了某SDK接口,该接口通过一个回调函数返回需要的内容.我们需要的内容是H.264码流,该码流通过一个unsigned char* 变量带回,另外还有一个长度 int length.为 ...
- Red Hat Enterprise Linux 6安装好,开启网卡到搭建tftp服务器和安装dnw驱动,安装samba服务器
今天一顿误操作,只能把Red Hat Enterprise Linux 6重新安装,一些必备工作只能重做,重做之后立马把Linux的文件备份,以备不时只需! 开启Linux以太网卡:vim /etc/ ...
- Spring如何对私有接口进行注入(转载)
来自:http://didiluck.iteye.com/blog/1779640 Spring 标注@Autowired 如果做到自动装配私有变量而不使用set方法的原理 熟悉jdk的话就知道,方 ...
- IPC 进程间通信方式——消息队列
消息队列 消息队列是内核中的一个链表 用户进程将数据传输到内核后,内核重新添加一些如用户ID.组ID.读写进程的ID和优先级等相关信息后并打包成一个数据包称为消息 允许一个或多个进程往消息队列中读写消 ...