使用python对文件夹的彩色图像加入真实夜间噪声并保存的代码
时间: 2024-02-21 22:57:23 浏览: 129
利用Python对文件夹下图片数据进行批量改名的代码实例
加入真实夜间噪声可以使用一些开源的噪声数据集,例如The Dark, Noisy, Blur Image Restoration Dataset (DnB)。这个数据集包含了在真实夜间环境下拍摄的图像,包括了夜间噪声、模糊和低光照等问题。
以下是一个Python脚本,用于对一个文件夹内的所有彩色图像加入DnB数据集中的夜间噪声,并保存到指定目录。需要先从DnB数据集中下载对应的噪声文件,然后将其放置在指定的文件夹中。
```python
import os
import cv2
import numpy as np
# 设置文件夹路径和保存路径
folder_path = '/path/to/folder'
save_path = '/path/to/save'
# 设置噪声文件夹路径和噪声参数
noise_folder_path = '/path/to/noise/folder'
noise_level = 0.03 # 噪声等级,根据实际情况调整
# 获取噪声文件列表
noise_files = os.listdir(noise_folder_path)
# 循环遍历文件夹内的所有图像文件
for file_name in os.listdir(folder_path):
# 读取图像
img_path = os.path.join(folder_path, file_name)
img = cv2.imread(img_path)
# 加载随机的噪声图像
noise_file_name = np.random.choice(noise_files)
noise_path = os.path.join(noise_folder_path, noise_file_name)
noise_img = cv2.imread(noise_path)
# 将噪声图像调整为与原始图像相同的大小
noise_img = cv2.resize(noise_img, img.shape[:2][::-1])
# 将噪声图像转换为灰度图像,并归一化到[0, 1]的范围
noise_img = cv2.cvtColor(noise_img, cv2.COLOR_BGR2GRAY)
noise_img = noise_img / 255.0
# 对图像加入噪声
noise = np.random.normal(0, noise_level, img.shape[:2])
noise_img = noise_img * noise
output_img = np.clip(img + noise_img, 0, 255).astype(np.uint8)
# 保存图像
output_path = os.path.join(save_path, file_name)
cv2.imwrite(output_path, output_img)
```
你只需要将其中的`folder_path`变量替换为你的彩色图像所在的文件夹路径,将`save_path`变量替换为你想要保存图像的路径,将`noise_folder_path`变量替换为DnB数据集中的噪声文件夹路径,根据实际情况调整`noise_level`变量的值(值越大,噪声越明显),运行这个脚本,就可以得到一个新的文件夹,其中包含了加入了真实夜间噪声的所有彩色图像。
阅读全文