当前位置: 首页 > 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. 最后,显示处理完成的消息。

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

http://www.lryc.cn/news/206819.html

相关文章:

  • ios上架上传构建版本的windows工具
  • arcgis js api 4.x加载geoserver发布的地方坐标系(自定义坐标系)的wms服务
  • 人工智能的发展方向:探索智能未来的无限可能
  • 【23秋软工第7周作业】项目选题
  • 谷歌云的利润增长才刚刚开始
  • 【Golang】简记操作:Centos安装、卸载、升级Golang运行环境
  • 开启生成式AI的探索之旅,亚马逊云科技分享生成式AI热门案例
  • 【Python机器学习】零基础掌握IsolationForest集成学习
  • GNN图神经网络入门
  • node 第十二天 npm补充 详解package-lock.json在团队协作中的作用
  • 解决Visual studio 未能正确加载...包问题
  • Baumer工业相机堡盟工业相机如何使用BGAPISDK生成视频(C++)
  • CentOS 搭建本地 yum 源方式 安装 httpd 服务
  • 第二篇 渲染框架2.x
  • k8s-----25、资源调度-ResourceQuota资源配额、资源限制limitrange、服务质量QoS
  • Pytorch使用torchvision.datasets.ImageFolder读取数据集,数据集的内容排列状况
  • uni-app:引用文件的方法
  • 软件测试必备:如何编写测试用例?
  • windows安装数据库MySQL
  • 2023CCF中国开源大会 | 麒麟信安作为首批合作伙伴入驻全国信创开源广场
  • python网络爬虫实例
  • ArcGIS中如何为跨带数据投影?
  • 如何在Ubuntu中安装libevent库
  • 领域高口碑 | 中科院1区TOP,Elsevier出版社,仅1个月Accept!稳定检索40年!
  • RDBMS 的历史回顾
  • windows 离线安装 vue 环境
  • python实现批量pdf转txt和word
  • c++ 并发与多线程(12)线程安全的单例模式-2
  • 银河麒麟v10x86或者arm离线安装服务
  • 【Ansible自动化运维工具 1】Ansible常用模块详解(附各模块应用实例和Ansible环境安装部署)