使用PIL对图像中一个矩形周围进行模糊处理

4
我想知道是否可能使用Python的PIL模块在矩形周围进行模糊处理。我已经尝试过一些方法,正如这篇文章所示,您可以使用蒙版来隔离某个区域。在这篇文章中,他正在做与我想要的相反的事情,但我没有找到解决方案。
下面是我的代码,仅适用于矩形模糊处理:
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFilter

# Open an image
im = Image.open('3055.png')

x1=810
y1=97
x2=1177
y2=992

# Create rectangle mask
mask = Image.new('L', im.size, 0)
draw = ImageDraw.Draw(mask)
draw.rectangle([ (x1,y1), (x2,y2) ], fill=255)
mask.save('mask.png')

# Blur image
blurred = im.filter(ImageFilter.GaussianBlur(52))

# Paste blurred region and save result
im.paste(blurred, mask=mask)
im.save("blurredImg.png")

图片:

originalImage

blurredImg

总的来说,我只想模糊粉色框的外部而不是内部。
2个回答

3

您可以用以下代码取代您代码的最后三行:

# Paste blurred region and save result
blurred.paste(im, mask=mask)
blurred.save("blurredImg.png")

使用掩码有效地将原始图像粘贴到模糊图像上,并保存结果。


谢谢!我感到很笨,没想到那个^^"。 - Otor
@Pierre-AdrienDelisle 不用担心,我们有时都会犯这种错误 =) - lenik

2

谢谢。您的代码片段对我有很大帮助。
在我的探索中,我发现了另一个解决方案:

mask = Image.new('L', im.size, 255)  # set color value 0 -> 255
draw = ImageDraw.Draw(mask) #unchanged
draw.rectangle([ (x1,y1), (x2,y2) ], fill=0)  # set fill level 255 -> 0
#this will create and inverted B/W mask

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接