imgaug批量椒盐噪声 python_python图像扩增-imgaug

# encoding=utf-8

import os

import imageio

import random

import numpy as np

import imgaug as ia

import concurrent.futures

from imgaug import augmenters as iaa

import matplotlib.pyplot as plt

from argparse import ArgumentParser

ia.seed(4)

# %matplotlib inline

# 参考 https://github.com/aleju/imgaug

func_norm = iaa.ContrastNormalization(alpha=(0.5, 1.5), per_channel=False)

func_add = iaa.Add(value=(-30, 40), per_channel=False)

func_hue_saturation = iaa.AddToHueAndSaturation(

value=(-35, 30), per_channel=False)

func_multiply = iaa.Multiply(mul=(0.8, 1.5), per_channel=False)

func_gamma = iaa.GammaContrast(gamma=(0.8, 1.5), per_channel=False)

func_log = iaa.LogContrast(gain=(0.7, 1.2), per_channel=False)

func_sigmoid = iaa.SigmoidContrast(gain=(2, 5), cutoff=0.5, per_channel=False)

func_coarse = iaa.CoarseDropout(

p=(0.1, 0.2), size_percent=0.1, per_channel=False)

switch_func = {

0: func_norm,

1: func_add,

2: func_hue_saturation,

3: func_multiply,

4: func_gamma,

5: func_log,

6: func_sigmoid,

7: func_coarse

}

def getFilePath(root_path, file_list):

dir_or_files = os.listdir(root_path)

for dir_file in dir_or_files:

dir_file_path = os.path.join(root_path, dir_file)

if os.path.isdir(dir_file_path):

getFilePath(dir_file_path, file_list)

else:

file_list.append(dir_file_path)

def getFilePath2(root_path, file_list, folder_list):

dir_or_files = os.listdir(root_path)

for dir_file in dir_or_files:

dir_file_path = os.path.join(root_path, dir_file)

if os.path.isdir(dir_file_path):

folder_list.append(dir_file_path)

getFilePath2(dir_file_path, file_list, folder_list)

else:

file_list.append(dir_file_path)

def getFilePathFilters(root_path, file_list, dir_filters):

dir_or_files = os.listdir(root_path)

for dir_file in dir_or_files:

dir_file_path = os.path.join(root_path, dir_file)

if os.path.isdir(dir_file_path):

if dir_file in dir_filters:

getFilePathFilters(dir_file_path, file_list, dir_filters)

else:

file_list.append(dir_file_path)

def makeDir(root_path):

if not os.path.exists(root_path):

os.makedirs(root_path)

def showImage(image):

image = np.array(image)

plt.imshow(image)

plt.show()

def saveImage(image, write_path):

imageio.imwrite(write_path, image)

def augmentFunc(image, index):

return switch_func[index].augment_image(image)

# 多线程执行函数

def augExecute(file_path):

new_file_path = file_path.replace(args.root_folder, args.new_folder)

print(new_file_path, end='\n')

image = imageio.imread(file_path)

index = random.randint(0, 7)

new_image = augmentFunc(image, index)

# showImage(new_image)

saveImage(new_image, new_file_path)

def colorImageAugment(augment_list, max_workers, dir_dict):

for augment_folder in augment_list:

file_list = []

folder_list = []

getFilePath2(augment_folder, file_list, folder_list)

# 创建新目录文件夹及其子文件夹

for folder_path in folder_list:

new_folder_path = folder_path.replace(

args.root_folder, args.new_folder)

makeDir(new_folder_path)

if max_workers == 0:

# 单线程

for file_path in file_list:

augExecute(file_path)

else:

# 多线程

with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor:

for _ in executor.map(augExecute, file_list):

pass

def main(args):

aug_folder_list = args.image_folder_path

dir_dict = {'root_dir': args.root_folder, 'trans_dir': args.new_folder}

max_workers = int(args.max_workers)

print("Start to augment image")

colorImageAugment(aug_folder_list, max_workers, dir_dict)

print("The end")

if __name__ == "__main__":

parser = ArgumentParser(description="Augment color image")

parser.add_argument(

"image_folder_path", nargs='+', help="Absolute path of image folder that going to augmentation")

parser.add_argument(

"root_folder", type=str, help="The folder and file under the root_folder is going to augmentation")

parser.add_argument("new_folder", type=str,

help="The folder that going to be build")

parser.add_argument("max_workers", type=int,

default=9, help="Multi thread num")

args = parser.parse_args()

main(args)

'''Usepython data_aug.py /your/path/to/augmentation/train/subdir1/ /your/path/to/augmentation/train/subdir2/ ... /your/path/to/augmentation/train/subdirn/ train train_aug第一个参数是 image_folder_path 需要处理的文件夹 要求绝对路径 可以传入多个第二个参数是 root_folder 处理文件夹的父级目录 程序会将该目录同级路径下创建 new_folder, 同时创建相同的字目录, 然后将 root_folder 下的图像处理保存到 new_folder 下相同自路径下第三个参数是 new_folder 见root_folder第四个参数是 max_workers 线程数量 0 为单线程'''

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

express html文件接收路由参数,express 获取post 请求参数

在 Express 中没有内置获取表单 POST 请求体的 API , 我们需要添加第三方插件库安装:npm install --save body-parser配置:var bodyParser require(body-parser)//配置 body-parser 中间件 (插件, 专门用来解析表单 POST 请求)// parse application/x-www-form-urlencodedapp.…

深度优先搜索重要模板

深度优先搜索(Depth-First-Search) 从起点出发,走过的点要做标记,发现有没走过的点,就随意挑一个往前走,走不 了就回退,此种路径搜索策略就称为“深度优先搜索”,简称“深搜”。 其实称为“远度优先搜索”…

360浏览器查看html文件在哪里,360浏览器8菜单栏怎么弄出来?如何查看网站源代码...

今天想查看一个页面的源代码,没想到这个页面竟然禁止了鼠标右键功能,所以无法通过鼠标右键选择“查看源代码”来查看。然后就想通过 360 浏览器的“查看源代码”按钮进行查看,没想到找了半天都找不到这个按钮,最后只能通过查看源代…

tcp欢动窗口机制_TCP协议中的窗口机制------滑动窗口详解

一、窗口机制的分类在TCP协议当中窗口机制分为两种:1.固定的窗口大小2.滑动窗口二、固定窗口存在的问题如下图所示:我们假设这个固定窗口的大小为1,也就是每次只能发送一个数据,只有接收方对这个数据进行了确认后才能发送第二个数…

1-1.HTML、CSS、JavaScript语言在web前端开发中的作用

HTML是网页内容的载体。内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字、图片、视频等。 CSS样式是表现。 就像网页的外衣。比如,标题字体、颜色变化,或为标题加入背景图片、边框等。所有这些用来改变内容外观的东西称之为…

判断html()中有长度,VBS 字符串长度判断的问题

对于给你一个字符串你应该怎样判断他的字符串长度,试举一些典型的例子C语言——字符串长度的计算方法提示:(1)计算字符串长度时关键是要注意辨认转义字符;(2)一个转义字符总是以反斜杠开始,再加一个其他字符组成。所以&#xff0c…

maxvalue mysql自动分区_创建mysql表分区的方法

创建mysql表分区的方法我来给大家介绍一下mysql表分区创建与使用吧,希望对各位同学会有所帮助。表分区的测试使用,主要内容来自于其他博客文章以及mysql5.1的参考手册。表分区是最近才知道的哦,以前自己做都是分表来实现上亿级别的数据了&…

html概述

什么是html? HTML(Hyper Text Markup Language)超文本标记语言。 标记语言就是让文本展示更丰富,更美观的一种语言。比如说文本加粗 更换颜色 斜体 html这种标记语言就是为了让网页展示更丰富,更美观的一种语言 开发…

计算机专业后悔么,王言匀

《中华独特疗法大成》分方法和治疗两篇。方法篇依据用药与否,分为药物疗法和非药物疗法两章,药物疗法按照给药途径分为内服法和外用法两节;非药物疗法根据施术手段分为针灸、推拿、气功及其他4节。这些章节介绍了273种治疗方法的基本内容、适…

python制作网页样式与布局_Python开发【第十二篇】:CSS装饰页面

CSS称为层叠样式表,是Cascading Style Sheets的缩写。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。CSS引入方式:行内式:对标签元素添加style属性,在style属性中设置CSS样式&#…

html标签的用途

语义化。那么什么叫做语义化呢,说的通俗点就是:明白每个标签的用途(在什么情况下使用此标签合理) 比如,网页上的文章的标题就可以用标题标签,网页上的各个栏目的栏目名称也可以使用标题标签。文章中内容的…

应用计算机散热的原理是什么,水冷散热器是什么原理?水冷可以带给机箱多大的散热作用?...

用户若是CPU安装了水冷散热器,就可以利用水快速导热和散热的特性加强主机硬件的散热效果,和普通风扇的散热效果相比,水冷可以更加有效的降低硬件温度和热量散发速度。阅读下文了解水冷散热器的原理和作用。CPU水冷散热器是指使用液体在泵的带…

markdown改字体和背景颜色(html)

背景色是 1 背景色2 BlueViolet 背景色是orange 字体的设置我是黑体字 我是微软雅黑 我是华文彩云 color#0099ff size72 face”黑体” color#00ffff colorgray Size&#xff1a;规定文本的尺寸大小。可能的值&#xff1a;从 1 到 7 的数字。浏览器默认值是 3 <tabl…

计算机展望未来网络形态,在学习中展望未来

域。虚拟现实技术、模拟技术、流媒体以及网络技术使我们的教育达到了前所未有的地步。利用技术&#xff0c;我们可以把浩瀚的宇宙、微小的分子、原子世界展现在学生面前&#xff1b;利用技术&#xff0c;学生不用走出教室&#xff0c;就可以遨游五洲&#xff0c;跨越四海。我们…

批量画同心不同半径圆lisp_cad绘制同心圆lisp二次开发源代码

简介&#xff1a;本资源为autocad同心圆lisp二次开发源代码下载,该代码文件可以直接在autocad中加载,执行,可以实现的功能为绘制多个间距一定的同心圆源代码&#xff1a;(Defun C:TXY ()(SetQ cp (GetPoint "圆心&#xff1a;")cr (GetDist cp "基础半径&#x…

mvc html传参数乱码,SpringMVC Controller 接收页面传递的中文参数出现乱码

在Controller中接收到的POST参数如果是中文的话&#xff0c;显示为乱码。已知客户端传过来时编码为UTF-8。问题产生分析&#xff1a;spring MVC中默认的编码格式为“ISO-8859-1”,因此造成乱码。简单的解决方式&#xff1a;New String(request.getParameter(“xxx”).getBytes(…

lisp scheme 果壳_走出Lisp(Scheme)困境

从去年开始入坑Lisp&#xff0c;周周转转也算是基本入门了这一传说中的语言。Lisp确实是一门很开明的语法规范。lambda是基本定义形式&#xff0c;递归在其骨子深处&#xff0c;试图通过函数表达世界&#xff0c;的确这个世界是周而复始的&#xff0c;有些人愿意称为循环&#…

jenkins部署流程图_持续集成-jenkins(自动化部署流程图)

1、什么是持续集成持续集成&#xff1a;简称CI。持续集成的特点&#xff1a;自动完成、保证每个时间点上团队成员提交的代码是成功集成的、需求不明确或频繁变更的情景、帮助企业减少管理风险。持续集成的应用场景&#xff1a;持续集成(CI)系统组成部分&#xff1a;版本控制系统…

django 表单html5,我们如何在django管理表单中添加动态html5数据属性

你继承Django的ModelChoiceField并修改它的render_options()和render_option()方法来显示你所需要的对象的属性。我想你也需要你自己的ModelChoiceIterator的子类&#xff0c;这样它不仅可以吐出id/label元组&#xff0c;而且可以分离出你需要的所有数据。例我只是找到了一个自…

中蜂几月份自然分蜂_蜜蜂什么时候自然分蜂?

一、自然分蜂时间蜂群自然分蜂一般多在春季晴朗天气的上午10点到下午2点左右发生&#xff0c;对于为什么蜂群多在春季自然分蜂是有原因&#xff0c;蜂群发生自然分蜂必须要具备一系列的条件才行&#xff0c;第一个条件是蜂群的群势要足够强大&#xff0c;第二个条件是外界蜜源丰…