发现CSDN上许多代码不适合小白,我来分享!!!
import numpy as np
from PIL import Image
def to_black(image):
# 将图片转换为灰度图像
gray_image = image.convert("L")
return gray_image
def add_salt_and_pepper_noise(image, amount=0.1, salt_vs_pepper=0.5):
# 将图片转换为数组
img_array = np.array(image)
# 创建一个与图片大小相同的随机数组
noise = np.random.rand(*img_array.shape)
# 定义噪声的阈值
salt_threshold = 1 - amount * salt_vs_pepper
pepper_threshold = amount * salt_vs_pepper
# 添加盐噪声(白色像素)
img_array[noise > salt_threshold] = 255
# 添加椒噪声(黑色像素)
img_array[noise < pepper_threshold] = 0
# 将数组转换回图片
noisy_image = Image.fromarray(img_array)
return noisy_image
def add_gaussian_noise(image, mean=0, std_dev=25):
# 将图片转换为数组
img_array = np.array(image)
# 生成与图像相同尺寸的高斯噪声
gaussian_noise = np.random.normal(mean, std_dev, img_array.shape)
# 将噪声添加到图片中
noisy_img_array = img_array + gaussian_noise
# 确保图片像素值在0到255之间
noisy_img_array = np.clip(noisy_img_array, 0, 255).astype(np.uint8)
# 将数组转换回图片
noisy_image = Image.fromarray(noisy_img_array)
return noisy_image
if __name__=="__main__":
# 打开图片
image = Image.open(r"E:\desktop\output\2.png")
# 添加椒盐噪声
# image = add_salt_and_pepper_noise(image, amount=0.1, salt_vs_pepper=0.5)
# 添加高斯噪声
# image=add_gaussian_noise(image, mean=0, std_dev=25)
# 变黑白
image=to_black(image)
# 保存或显示添加噪声后的图片
image.save(r"E:\desktop\output\4.png")
image.show()
修改输入图片路径和保存图片路径即可,可以自选三个功能,变黑白、加高斯噪声、加椒盐噪声。
原图 黑白图
椒盐噪声 高斯噪声