当前位置: 首页 > news >正文

对文件夹内的所有图像进行随机调整对比度和应用高斯滤波

import os
import random
from PIL import Image, ImageEnhance, ImageFilter# 输入和输出文件夹路径
input_folder = r'E:\深度学习数据集'
output_folder = r'E:\深度学习数据集\对比度、高斯滤波'# 确保输出文件夹存在,如果不存在则创建
if not os.path.exists(output_folder):os.mkdir(output_folder)# 获取输入文件夹中的所有图像文件
image_files = [f for f in os.listdir(input_folder) if f.endswith('.jpg')]# 循环处理每个图像文件
for i, image_file in enumerate(image_files):try:# 打开图像image = Image.open(os.path.join(input_folder, image_file))# 检查图像的模式,如果不是RGB,则转换为RGBif image.mode != 'RGB':image = image.convert('RGB')# 随机调整对比度contrast_factor = random.uniform(0.7, 1.3)contrast = ImageEnhance.Contrast(image)image = contrast.enhance(contrast_factor)# 随机应用高斯滤波if random.random() < 0.5:radius = random.uniform(1, 2)image = image.filter(ImageFilter.GaussianBlur(radius))# 生成新的文件名new_filename = f'a{i + 1:03}.jpg'new_filepath = os.path.join(output_folder, new_filename)# 保存处理后的图像image.save(new_filepath)print(f'Processed: {image_file} -> {new_filename}')except Exception as e:print(f'Error processing {image_file}: {e}')print('图像处理完成。')

这段代码是用Python编写的,用于处理指定文件夹中的图像文件,包括随机调整对比度和随机应用高斯滤波,然后将处理后的图像保存在另一个文件夹中,并以新的文件名进行重命名。代码还包含了异常处理,以便在处理图像时出现错误时,程序会捕获异常并继续处理下一个图像,而不会终止运行。

下面是对代码的详细解析:

1. 导入所需的库:
   - `os`: 用于处理文件和文件夹路径。
   - `random`: 用于生成随机数。
   - `PIL` 中的相关模块:用于图像处理。
   
2. 指定输入和输出文件夹的路径:
   - `input_folder`:包含原始图像的文件夹路径。
   - `output_folder`:将处理后的图像保存到的文件夹路径。

3. 确保输出文件夹存在:
   - 使用 `os.path.exists(output_folder)` 检查输出文件夹是否存在。
   - 如果不存在,使用 `os.mkdir(output_folder)` 创建输出文件夹。

4. 获取输入文件夹中的所有图像文件:
   - 使用列表推导式,获取输入文件夹中以 ".jpg" 结尾的所有文件,并将它们存储在 `image_files` 列表中。

5. 循环处理每个图像文件:
   - 使用 `enumerate` 函数迭代 `image_files` 列表,同时获取索引 `i` 和图像文件名 `image_file`。
   - 使用 `try` 和 `except` 块来处理每个图像,以便在处理图像时出现错误时能够捕获异常。

6. 在 `try` 块内部:
   - 打开图像:使用 `Image.open` 打开当前图像文件,得到一个 PIL 图像对象 `image`。

7. 检查图像模式:
   - 使用 `if image.mode != 'RGB'` 条件来检查图像的模式是否为 RGB。
   - 如果不是 RGB 模式,使用 `image.convert('RGB')` 将图像转换为 RGB 模式。

8. 随机调整对比度:
   - 生成一个随机的对比度调整因子 `contrast_factor`。
   - 使用 `ImageEnhance.Contrast` 创建一个对比度增强对象,然后使用 `enhance` 方法调整对比度。

9. 随机应用高斯滤波:
   - 通过生成一个随机数来决定是否应用高斯滤波(50% 的概率)。
   - 如果要应用高斯滤波,生成一个随机的模糊半径 `radius`,然后使用 `image.filter(ImageFilter.GaussianBlur(radius))` 来应用高斯滤波。

10. 生成新的文件名:
    - 使用 `f-string` 格式化生成新的文件名,如 "a001.jpg","a002.jpg" 等。

11. 保存处理后的图像:
    - 使用 `image.save(new_filepath)` 将处理后的图像保存到输出文件夹中。
    - 打印出处理的信息,显示原始文件名和新的文件名。

12. 在 `except` 块内部:
    - 如果在处理图像时出现异常,捕获异常并打印错误消息,指示哪个图像出现了问题。

13. 最后,显示处理完成的消息。

通过这种方式,代码能够处理输入文件夹中的所有图像文件,即使在处理某个图像时出现错误,也不会中断程序的执行,而是继续处理下一个图像。这种异常处理方式使代码更健壮,可以应对各种潜在的问题。

相关文章:

对文件夹内的所有图像进行随机调整对比度和应用高斯滤波

import os import random from PIL import Image, ImageEnhance, ImageFilter# 输入和输出文件夹路径 input_folder rE:\深度学习数据集 output_folder rE:\深度学习数据集\对比度、高斯滤波# 确保输出文件夹存在&#xff0c;如果不存在则创建 if not os.path.exists(output_…...

ios上架上传构建版本的windows工具

ios上架的必要步骤&#xff0c;是将打包好的二进制ipa文件&#xff0c;上传到app store的构建版本里&#xff0c;苹果并没有提供上传构建版本的工具&#xff0c;这里我介绍下windows下上传构建版本的方案。 下面说下上传的基本步骤&#xff1a; 第一步&#xff0c;上传前要先…...

arcgis js api 4.x加载geoserver发布的地方坐标系(自定义坐标系)的wms服务

问题描述&#xff1a;之前研究过arcgis js api 4.x加载arcgis server 发布的地方坐标系的wms服务&#xff0c;后来研究出来能正常加载了&#xff0c;想了解的可以看我之前的博客。但是一直困于加载geoserver发布的地方坐标系的wms服务&#xff0c;一直都是用的WMSLayer这个调用…...

人工智能的发展方向:探索智能未来的无限可能

原创 | 文 BFT机器人 人工智能&#xff0c;简称AI&#xff0c;是一门专注于研究计算机如何能像人类一样思考、学习和解决问题的科学。它的创造初衷是构建一个智能系统&#xff0c;能模仿、模拟甚至实现人工智能的各种功能和行为&#xff0c;随着科技的持续进步&#xff0c;人工…...

【23秋软工第7周作业】项目选题

一、如何提出靠谱的项目建议&#xff0c;参见邹欣老师的博客&#xff1a;http://www.cnblogs.com/xinz/archive/2010/12/01/1893323.html 二、选题来源指导&#xff1a; 有创意和独创性的小项目 跟智能数据处理相关 候选题目可以参见课程主页 三、具体汇报任务&#xff1a; …...

谷歌云的利润增长才刚刚开始

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 总结&#xff1a; &#xff08;1&#xff09;自从Google Cloud(谷歌云&#xff09;今年开始盈利以来&#xff0c;投资者都在怀疑这种盈利能力能否持续下去。 &#xff08;2&#xff09;虽然微软Azure目前在全球的人工智能竞…...

【Golang】简记操作:Centos安装、卸载、升级Golang运行环境

目录 安装 1、根据实际需求选择合适的golang版本 如下图&#xff0c;选择合适的版本&#xff0c;右键复制链接 2、在Centos选择合适的目录下载golang的源文件 3、解压golang的源文件&#xff0c;解压完成即可执行go命令 4、设置golang的全局环境变量&#xff08;/etc/pr…...

开启生成式AI的探索之旅,亚马逊云科技分享生成式AI热门案例

现今&#xff0c;生成式AI为企业争先讨论的热门话题&#xff0c;上云出海为企业转型的重中之重。无论你是行业新贵还是中小企业&#xff0c;探索新的模式、创新迭代业务都是不容忽视的重点&#xff0c;下面就来介绍几个亚马逊云科技帮助企业创新的案例。 开启生成式AI的探索之旅…...

【Python机器学习】零基础掌握IsolationForest集成学习

如何有效地识别异常数据点? 在日常工作和生活中,经常会遇到需要从大量数据中找出异常或者“不一样”的数据点的情况。比如在金融领域,怎样从数以百万计的交易记录中准确地找出可疑的欺诈交易?又或者在电商平台,如何从海量的商品评论中找出那些刷好评或刷差评的异常数据?…...

GNN图神经网络入门

1.为什么会提出图神经网络&#xff1f; 答&#xff1a;为了处理图Graph这种特殊的数据结构。 2.为什么要与神经网络搭上关系&#xff1f; 答&#xff1a;利用神经网络能够拟合任意函数的能力&#xff08;或者理解为强大的为特征变换能力&#xff09;。 3.图神经网络的最终目的是…...

node 第十二天 npm补充 详解package-lock.json在团队协作中的作用

1.npm 是Node的开放式模块登记和管理系统&#xff0c;是Node.js包的标准发布平台&#xff0c;用于Node.js包的发布、传播、依赖控制 2.今天主要说的是package-lock.json在团队协作中的作用(yarn.lock也是一样), 其实在npm5之后和yarn的区别已经很小了 正常项目用哪个都行, 几乎…...

解决Visual studio 未能正确加载...包问题

问题 解决&#xff1a; 菜单: Visual Studio 2019 -> 输入"devenv /resetsettings " 将之前的设置恢复到原始状态。且可以正常使用。理论应该可以使用到其它版本中……...

Baumer工业相机堡盟工业相机如何使用BGAPISDK生成视频(C++)

Baumer工业相机 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机&#xff0c;可用于各种应用场景&#xff0c;如物体检测、计数和识别、运动分析和图像处理 Baumer的万兆网相机拥有出色的图像处理性能&#xff0c;可以实时传输高分辨率图像。此外&#xff0c;该相机还…...

CentOS 搭建本地 yum 源方式 安装 httpd 服务

CentOS 搭建本地 yum 源方式 安装 httpd 服务 修改 yum 源 挂载光驱 mkdir -p /mnt/cdrom mount /dev/cdrom /mnt/cdromvi /etc/fstab追加以下内容&#xff1a; /dev/cdrom /mnt/cdrom iso9660 defaults 0 0手动修改CentOS-Base.repo 备份 yum 源配置文件 mv /etc/yum.re…...

第二篇 渲染框架2.x

简介 整个渲染框架主要包含&#xff1a;用于控制场景中所有渲染节点的渲染状态的流程的RenderFlow。更新渲染数据、写入Buffer的Assembler。暂存数据的RenderData。数据缓冲区的MeshBuffer、quadBuffer、spineBuffer。包含着色器程序和渲染技术的Material。渲染指令数据的装载…...

k8s-----25、资源调度-ResourceQuota资源配额、资源限制limitrange、服务质量QoS

1、ResourceQuota资源配额 1.0 作用 命名空间资源配额。防止公司内部人员对资源的不合理利用。 1.1、为什么需要资源配额 1、作为k8s集群的管理员&#xff0c;知道集群的规模&#xff0c;会合理规划资源&#xff0c;但是使用侧不知道&#xff0c;会导致很多不合理的使用场景…...

Pytorch使用torchvision.datasets.ImageFolder读取数据集,数据集的内容排列状况

当使用torchvision.datasets.ImageFolder读取猫狗数据集时,dataset中存的图片是 猫狗猫狗猫狗猫狗 还是 猫猫猫猫狗狗狗狗 呢? 数据集文件的存放路径如下图 测试代码如下 import torch import torchvisiontransform torchvision.transforms.Compose([torchvision.transform…...

uni-app:引用文件的方法

绝对定位 ①import common from "/utils/common.js" ②import common from "utils/common.js" <template><view></view> </template> <script>import common from "/utils/common.js"export default {data() {ret…...

软件测试必备:如何编写测试用例?

前言 今天想和大家来聊聊测试用例&#xff0c;这篇文章主要是想要写给软件测试小伙伴们的&#xff0c;因为我发现还是有很多小伙伴在遇到写测试用例的时候无从下手&#xff0c;我就想和大家简单的聊聊&#xff0c;这篇文章主要是针对功能测试的哟。 同时&#xff0c;我也准备…...

windows安装数据库MySQL

windows安装数据库MySQL 文章目录 windows安装数据库MySQL一、MySQL官网下载压缩包二、在D盘新建文件夹D:\MySQL&#xff0c;将下载的压缩包解压到该文件夹下三、配置环境变量四、通过命令行模式安装、启用、配置SQL服务 一、MySQL官网下载压缩包 下载地址&#xff1a;https:/…...

2023CCF中国开源大会 | 麒麟信安作为首批合作伙伴入驻全国信创开源广场

聚开源各界群智&#xff0c;于湘江之滨论道。10月21-22日&#xff0c;以“开源联合&#xff0c;聚力共赢”为主题的2023 CCF中国开源大会&#xff08;CCF ChinaOSC&#xff09;在长沙隆重召开。本届大会由中国计算机学会、开放原子开源基金会主办&#xff0c;中国工程院院士、鹏…...

python网络爬虫实例

目录 1、访问百度 2、输入单词百度翻译 3、豆瓣电影排行榜 4、豆瓣电影top250 5、下载美女壁纸 1、访问百度 from urllib.request import urlopen url"http://www.baidu.com" respurlopen(url)with open("mybaidu.html",mode"w") as f:f.wr…...

ArcGIS中如何为跨带数据投影?

北京54、西安80高斯克吕格投影是我国常用的投影坐标系统,它们是一种分带投影方式,有3和6分带,不适合大范围内的投影使用。但是如果有份数据范围较大,跨越了多个度带,该选择哪个坐标系统进行投影转换呢? 在大范围内,常用的坐标系统有Albers等面积投影和Lambert等角投影,…...

如何在Ubuntu中安装libevent库

我自己在ubuntu 22 和20上都安装成功了。应该是每个版本都适合的。 我主要是整合参考这两个人的。 Ubuntu安装及测试Libevent_如何查看ubuntu是否安装了libevent-CSDN博客 【精选】Linux Ubuntu 20.04LTS安装OpenSSL步骤_ubuntu安装openssl-CSDN博客 下载方法一&#xff1a…...

领域高口碑 | 中科院1区TOP,Elsevier出版社,仅1个月Accept!稳定检索40年!

【SciencePub学术】本期&#xff0c;小编给大家推荐的是一本Elsevier旗下、稳定检索40年、影响因子为10.0的中科院1区TOP刊&#xff0c;期刊详情及专题信息如下&#xff1a; 期刊简介 COMPUTERS IN INDUSTRY ISSN&#xff1a;0166-3615 E-ISSN&#xff1a;1872-6194 IF&a…...

RDBMS 的历史回顾

“数据库”这个词是怎么来的&#xff1f;当 SQL 是 SEQUEL 时它代表什么&#xff1f;通过这篇有关 RDBMS 历史的文章了解所有这些内容以及更多内容。 埃里克迪特里希用户头像 经过 埃里克迪特里希 核心 Anush Gasparyan 用户头像 经过 阿努什加斯帕里安 2017年7月21日 意见…...

windows 离线安装 vue 环境

由于公司要求在内网开发项目&#xff0c;而内网不能连接外网&#xff0c;因此只能离线安装 vue 环境&#xff0c;在网上找过很多的离线安装方法&#xff0c;但都没有成功&#xff0c;于是在不断的尝试中找到了以下方法。 1、找一台与内网电脑相同系统的有网电脑。 2、在有网的电…...

python实现批量pdf转txt和word

文章目录 背景需求环境安装完整代码效果 背景需求 已经获取到了大量的pdf在download文件夹中&#xff0c;但是我需要的是txt文件和word文件&#xff5e; 环境安装 pip install pdf2docx pdfminer.six完整代码 # pip install pdf2docx pdfminer.siximport os from pdf2docx …...

c++ 并发与多线程(12)线程安全的单例模式-2

一、内部静态变量的懒汉单例(C++11 线程安全) #include <iostream> #include <thread> #include <vector>class Single { public:// 获取单实例对象static Single& GetInstance();// 打印实例地址void Print();private:// 私有构造函数,防止外部创建对…...

银河麒麟v10x86或者arm离线安装服务

银河麒麟v10x86或者arm离线安装服务 最近有个项目&#xff0c;甲方的服务器用的全是国产化服务器银河麒麟&#xff0c;架构是x86的然后也无法连接外网&#xff0c;需要离线安装服务正常思路就是找到离线安装的包&#xff0c;然后拷贝到现场的服务器中进行安装所以问题就在于如…...