You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为图像添加高斯噪声并保存生成的新图像文件

问题原因

skimage.util.random_noise() 的返回值是取值范围为[0, 1]的float64类型NumPy数组,不是PIL库的Image对象,因此无法直接调用PIL的save()方法。

解决方法

你可以选择以下任意一种方案完成保存:

方案1:转换回PIL Image对象后保存

先把NumPy数组的取值转换为图像通用的[0, 255]无符号整数格式,再转回PIL对象即可正常调用save方法,示例代码如下:

import os
import skimage
import numpy as np
from PIL import Image

# 配置输入、输出目录
input_path = '/home/onur/Downloads/datasets/LFW-a/lfw2/'
output_path = '/home/onur/Downloads/datasets/LFW-a/lfw2_gaussian_noise/'
# 自动创建输出目录,避免路径不存在报错
os.makedirs(output_path, exist_ok=True)

for img_name in os.listdir(input_path):
    img_full_path = os.path.join(input_path, img_name)
    # 跳过目录项,仅处理文件
    if not os.path.isfile(img_full_path):
        continue
    # 读取原始图像
    img = Image.open(img_full_path)
    # 添加高斯噪声
    noisy_img = skimage.util.random_noise(img, mode='gaussian', seed=None, clip=True)
    # 数值范围转换到[0,255]并转为uint8类型
    noisy_img = (noisy_img * 255).astype(np.uint8)
    # 转回PIL格式
    noisy_img_pil = Image.fromarray(noisy_img)
    # 保存图像
    noisy_img_pil.save(os.path.join(output_path, img_name))

方案2:直接用skimage自带IO接口保存

如果不需要转回PIL格式做后续处理,也可以直接用skimage的io模块保存数组,同样需要先做数值格式转换:

import os
import skimage
from skimage import io
from PIL import Image

input_path = '/home/onur/Downloads/datasets/LFW-a/lfw2/'
output_path = '/home/onur/Downloads/datasets/LFW-a/lfw2_gaussian_noise/'
os.makedirs(output_path, exist_ok=True)

for img_name in os.listdir(input_path):
    img_full_path = os.path.join(input_path, img_name)
    if not os.path.isfile(img_full_path):
        continue
    img = Image.open(img_full_path)
    noisy_img = skimage.util.random_noise(img, mode='gaussian', seed=None, clip=True)
    # 转换格式后直接保存
    io.imsave(
        os.path.join(output_path, img_name),
        (noisy_img * 255).astype(np.uint8)
    )
注意事项
  • 必须做[0,1]到[0,255]的数值范围转换和类型转换,否则保存的图像会出现全白、全黑或者类型报错问题
  • 建议单独创建输出目录存放加噪后的图像,避免覆盖原始数据集文件

内容的提问来源于stack exchange,提问作者mchd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 16:48:46