Python 使用PIL在图像中的矩形周围进行模糊

Python 使用PIL在图像中的矩形周围进行模糊,python,python-imaging-library,Python,Python Imaging Library,我想知道是否可以用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

我想知道是否可以用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")
图片:


总而言之,我只想模糊粉色框的外部,而不是内部。

您可以用以下代码替换代码的最后3行:

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

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

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

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

非常感谢。我觉得自己是个白痴,没想过这个^^“@Pierre AdrienDelisle别担心,我们有时都会那样做=)