Размытие вокруг прямоугольника на изображении с помощью PIL - PullRequest
2 голосов
/ 11 июля 2019

Мне было интересно, можно ли сделать размытие по всему прямоугольнику с помощью модуля PIL на python.Я пробовал кое-что, и, как показывает этот пост , вы можете сделать маски, чтобы изолировать определенную область.В этом посте он делает противоположное тому, что я хочу, но мне не удалось найти решение.

Вот мой код, работающий только с размытием прямоугольника:

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")

images:

originalImage

blurredImg

Подводя итог, я просто хочу, чтобы снаружирозовая коробка размыта, но не внутри.

1 Ответ

1 голос
/ 11 июля 2019

Вы можете заменить последние 3 строки вашего кода следующим образом:

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

, эффективно вставляя исходное изображение поверх размытого с помощью маски, и сохраняя результат.

...