import numpy as np
from PIL import Image
import scipy.signal as signal
im = Image.open("123.jpg") # 从硬盘中加载到内存
data = [] # 存储图像中所有像素值的list
width, height = im.size # 将图片尺寸记录下来
for h in range(height): # 行号
row = [] # 记录每一行像素
for w in range(width): # 每一行像素列位置
value = im.getpixel((w, h)) # 读取像素点
row.append(value) # 加到list中
data.append(row)
data = signal.medfilt(data, (9, 9, 3)) # 二维中值滤波
data = np.int32(data) # 转换为int类型 快速滤波
print(data)
for h in range(height): # 对每一行
for w in range(width): # 每一列
im.putpixel((w, h), tuple(data[h][w])) # 将data中该位置的值存进图像,参数为tuple
im.save("235.jpg")