对图片做以下处理:加胡椒噪声,加盐粒噪声,最大值滤波,最小值滤波,高斯滤波,Sobel梯度算子,拉普拉斯算子,拉普拉斯锐化增强图像。把以上效果图在一张画布中显示出来的代码
时间: 2024-09-18 18:04:30 浏览: 78
在Python中,我们可以使用PIL(Pillow)库来进行图片处理,并结合numpy进行数值计算。这里是一个简单的示例,展示了如何对图片进行上述几种处理,并将结果放在一张画布上展示。注意这只是一个基础示例,实际应用可能需要更复杂的图像处理库如OpenCV。
```python
from PIL import Image, ImageDraw, ImageFilter
import numpy as np
# 加载图片
img = Image.open('input.jpg')
width, height = img.size
# 创建一个新的空白画布
canvas = Image.new('RGB', (width * 2, height * 2), color='white')
# 图片位置
start_x, start_y = 0, 0
# 图像处理函数
def process_image(image, effect):
if effect == '胡椒噪声':
image = image.point(lambda p: p + np.random.randint(-25, 26))
elif effect == '盐粒噪声':
noise = Image.new('L', image.size, 255)
noise.paste(image, Image.eval(noise, lambda p: p > 127), image)
image = Image.composite(noise, image, noise)
# ...其他处理类似,依次替换效果名称
return image
# 应用于原始图片并添加到画布
for i in range(4):
effect = f'效果{i+1}'
processed_img = process_image(img.copy(), effect)
canvas.paste(processed_img, (start_x, start_y))
start_x += width
# 滤波等操作可以使用ImageFilter模块直接处理
filtered_img = img.filter(ImageFilter.GaussianBlur(radius=2)) # 高斯滤波
canvas.paste(filtered_img, (start_x, start_y))
# 计算梯度和拉普拉斯算子通常需要先转换为灰度图
gray_img = img.convert('L')
sobel_gradient = gray_img.filter(ImageFilter.SOBEL) # Sobel算子
laplacian = gray_img.filter(ImageFilter.LAPLACIAN) # Laplacian算子
sharpness = laplacian.filter(ImageFilter.SHARPEN) # 拉普拉斯锐化
# 将梯度和锐化结果添加到画布
canvas.paste(sobel_gradient, (start_x, start_y + height))
canvas.paste(sharpness, (start_x, start_y + height * 2))
# 显示处理后的图片
canvas.show()
阅读全文
相关推荐


















