【python代码】对图片进行数据增强(直方图均衡和加噪声)

文章目录

  • 1. 代码


1. 代码

import os
import cv2
import albumentations as A
from tqdm import tqdm
from glob import glob
import numpy as np# 方法1:加入噪声
trans2 = A.Compose([A.RandomBrightnessContrast(p=0.5),A.HueSaturationValue(p=0.5),A.OneOf([ A.AdvancedBlur(p=0.5),A.Blur(p=0.5),A.Defocus(p=0.5),A.GaussianBlur(p=0.5),A.GlassBlur(p=0.5),A.MedianBlur(p=0.5),A.MotionBlur(p=0.5),],p=1.0),A.GaussNoise(p=0.5),])# 方法2:直方图均衡化:对比度受限自适应直方图均衡
trans3 = A.Compose([A.CLAHE(p=1),  # 对比度受限自适应直方图均衡A.RandomGamma(p=0.5),])def create_dir(path):if not os.path.exists(path):os.makedirs(path)def load_data_aug(path):# todo:train imgstrain_x = sorted(glob(os.path.join(path, "train/images", "*.png")))train_y = sorted(glob(os.path.join(path, "train/masks/0", "*.png")))# todo:val imgsval_x = sorted(glob(os.path.join(path, "val/images", "*.png")))val_y = sorted(glob(os.path.join(path, "val/masks/0", "*.png")))# test_x = sorted(glob(os.path.join(path, "test/images", "*.png")))# test_y = sorted(glob(os.path.join(path, "test/masks/0", "*.png")))return (train_x, train_y),  (val_x, val_y)def augment_data(images, masks, save_path, augment=False):for idx, (x, y) in tqdm(enumerate(zip(images, masks)), total=len(images)):name = x.split("/")[-1].split(".")[0]img = cv2.imread(x)# img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)# img = img[:, 520:3368, :]   # 对图片进行裁剪# mask = cv2.imread(y, 0) # todo:将图像读取为单通道的灰度图像# mask = mask[:, 520:3368]    # 对图片进行裁剪mask = cv2.imread(y)# for i, m in zip(img, mask):#     print(i.shape)#     print(m.shape)transformed = trans3(image=img, mask=mask) # todo:select methodsimg= transformed['image']mask = transformed['mask']# img = trans3(image=img)['image']# i1 = cv2.resize(img, (512, 512))# m1 = cv2.resize(mask, (512, 512))tmp_image_name = f"{name}_trans3.png"  # todo:renametmp_mask_name = f"{name}_trans3.png"   # todo:renameimage_path = os.path.join(save_path, "images", tmp_image_name)mask_path = os.path.join(save_path, "masks", "0",  tmp_mask_name)cv2.imwrite(image_path, img, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])cv2.imwrite(mask_path, mask, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])if __name__ == '__main__':root_path = 'path/to/数据集根目录'out_path ='path/to/保存路径(数据集根目录)'(train_x, train_y), (val_x, val_y) = load_data_aug(root_path)# print(train_x)# print(train_y)# print(test_x)# print(test_y)# create_dir(out_path + "/train/images/")# create_dir(out_path + "/train/masks/0")# create_dir(out_path + "/val/images/")# create_dir(out_path + "/val/masks/0")# create_dir(out_path + "/test/images/")# create_dir(out_path + "/test/masks/0")augment_data(train_x, train_y, out_path + "/train/", augment=False)augment_data(val_x, val_y, out_path + "/val/", augment=False)# augment_data(test_x, test_y, out_path + "/test/", augment=False)

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

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

相关文章

网络基础-2

IEEE制定了一个名为GARP的协议框架,该框架协议包含了两个具体协议,GMRP和GVRP。GVRP可以大大降低VLAN配置过程中的手工的工作量。 IP本身是一个协议文件的名称,该协议主要定义阐释了IP报文的格式。 类型网络号位数网络号个数主机号位数每个…

水溶性纳米银颗粒 纳米银颗粒 银纳米颗粒溶液

西)产品名称:水溶性纳米银颗粒 安)别名 :纳米银溶液 银纳米颗粒溶液 纳米银胶体等 瑞)浓度:0.1mg/mL 其它均可定制 禧)粒径:5nm 10nm 15nm 20nm 25nm 30nm 35nm 40nm 50nm 60nm 80…

Ceph入门到精通-文件条带化 stripe unit,chunk

文件条带化 以下文本描述了 Ceph 文件系统客户端中的文件是如何 存储在 RADOS 中的对象之间。 CEPH_FILE_LAYOUT Ceph 将给定文件的数据分布(条带化)到多个 的基础对象。文件数据映射到这些对象的方式 由ceph_file_layout结构定义。数据分布 是修改后…

0052【Edabit ★☆☆☆☆☆】Learn Lodash: _.drop, Drop the First Elements of an Array

0052【Edabit ★☆☆☆☆☆】Learn Lodash: _.drop, Drop the First Elements of an Array arrays Instructions According to the lodash documentation, _.drop creates a slice of an array with n elements dropped from the beginning. Your challenge is to write your…

RabbitMQ一条消息被多个消费者消费

前言:可略过 正常情况下交换机和queue绑定,消息经过交换机发送给指定的队列。队列的消息被监听消费后就被删除,queue的消息仅能被消费一次。 如何解决呢,如果单从queue的角度出发,可能会联想到fanout-广播模式&#xf…

1.6 基本安全设计准则

思维导图: 1.6 基本安全设计准则笔记 目标:理解和遵循一套广泛认可的安全设计准则,以指导保护机制的开发。 主要准则: 机制的经济性:安全机制应设计得简单、短小,便于测试和验证,减少漏洞和降…

【数据结构】顺序表实例探究

💗个人主页💗 ⭐个人专栏——数据结构学习⭐ 💫点击关注🤩一起学习C语言💯💫 目录 导读:1. 顺序表的基本内容1.1 概念及结构1.2 时间和空间复杂度1.3 基本操作1.4 顺序表的优缺点 2. 静态顺序表…

自动化测试注意事项

什么是自动化测? 做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多。一直想动笔写一篇文章分享自动化测试实践中的一些经验。终于决定花点时间来做这件事儿。 首先理清自动化测试的概念,广义上来讲&#…

华锐技术何志东:证券核心交易系统分布式改造将迎来规模化落地阶段

近年来,数字化转型成为证券业发展的下一战略高地,根据 2021 年证券业协会专项调查结果显示,71% 的券商将数字化转型列为公司战略任务。 在落地数字化转型战略过程中,证券业核心交易系统面临着不少挑战。构建新一代分布式核心交易…

06 MIT线性代数-线性无关,基和维数Independence, basis, and dimension

1. 线性无关 Independence Suppose A is m by n with m<n (more unknowns than equations) Then there are nonzero solutions to Ax0 Reason: there will be free variables! A中具有至少一个自由变量&#xff0c;那么Ax0一定具有非零解。A的列向量可以线性组合得到零向…

酷克数据出席永洪科技用户大会 携手驱动商业智能升级

10月27日&#xff0c;第7届永洪科技全国用户大会在北京召开。酷克数据作为国内云原生数仓代表企业&#xff0c;受邀出席本次大会&#xff0c;全面展示了云数仓领域最新前沿技术&#xff0c;并进行主题演讲。 携手合作 助力企业释放数据价值 数据仓库是商业智能&#xff08;BI…

Easy Javadoc插件的使用教程

目录 一、安装Easy Javadoc插件 二、配置注释模板 三、配置翻译 一、安装Easy Javadoc插件 在idea的File-Settings-Plugins中搜索Easy Javadoc插件&#xff0c;点击install进行安装&#xff0c;安装完成后需要restart IDE&#xff0c;重启后插件生效。 二、配置注释模板 …

openGauss学习笔记-111 openGauss 数据库管理-管理用户及权限-用户权限设置

文章目录 openGauss学习笔记-111 openGauss 数据库管理-管理用户及权限-用户权限设置111.1 给用户直接授予某对象的权限111.2 给用户指定角色111.3 回收用户权限 openGauss学习笔记-111 openGauss 数据库管理-管理用户及权限-用户权限设置 111.1 给用户直接授予某对象的权限 …

SIT3088E3.0V~5.5V 供电,ESD 15kV HBM,256 节点,14Mbps 半双工 RS485/RS422 收发器

SIT3088E 是一款 3.0V~5.5V 宽电源供电、总线端口 ESD 保护能力 HBM 达到 15kV 以上、总 线耐压范围达到 15V 、半双工、低功耗&#xff0c;功能完全满足 TIA/EIA-485 标准要求的 RS-485 收发器。 SIT3088E 包括一个驱动器和一个接收器&#xff0c;两者均可独立…

SpringCloud 微服务全栈体系(七)

第九章 Docker 一、什么是 Docker 微服务虽然具备各种各样的优势&#xff0c;但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中&#xff0c;依赖的组件非常多&#xff0c;不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署&#xff0c;环境不一定一致…

MySQL系列-架构体系、日志、事务

MySQL架构 server 层 &#xff1a;层包括连接器、查询缓存、分析器、优化器、执行器等&#xff0c;涵盖 MySQL 的大多数核心服务功能&#xff0c;以及所有的内置函数&#xff08;如日期、时间、数学和加密函数等&#xff09;&#xff0c;所有跨存储引擎的功能都在这一层实现&am…

行情分析——加密货币市场大盘走势(10.31)

目前大饼依然在33000-36000这个位置震荡&#xff0c;需要等待指标修复&#xff0c;策略就是逢低做多&#xff0c;做短线。最近白天下跌&#xff0c;晚上涨回来&#xff0c;可以小仓位入场多单&#xff0c;晚上离场下车。 以太同样是震荡行情&#xff0c;看下来以太目前在补涨&a…

VHDL测试文件的读入和写出

相关库 use std.textio.all; use IEEE.STD_LOGIC_TEXTIO.ALL;相关参数 file output_file :text; //fid variable fstatus :file_open_status; variable buf :line; //buffer相关函数 //文件打开函数 file_open(file_open_status, fid, file_…

Mybatis—基础操作

mybatis入门后&#xff0c;继续学习mybatis基础操作。 目录 Mybatis基础操作准备工作删除操作日志输入预编译SQLSQL注入参数占位符 新增操作基本新增添加后返回主键 更新操作查询操作根据id查询数据封装条件查询条件查询 Mybatis基础操作 准备工作 根据下面页面原型及需求&am…

python:Paramiko / SCP-检查文件是否在远程主机上

关于python&#xff1a;Paramiko / SCP-检查文件是否在远程主机上 | 码农家园 (codenong.com)