首页 > 解决方案 > 带有 Pillow 的图像上的羽毛边缘

问题描述

我试图弄清楚如何使用 Pillow 和 Python 来羽化图像的边缘。

我需要像这只可爱的猫这样的东西(忽略可见的边缘):

在此处输入图像描述

我试过im.filter(ImageFilter.BLUR)了,但不是我想要的。

标签: imagepython-3.6pillow

解决方案


看看这个例子:

from PIL import Image
from PIL import ImageFilter

RADIUS = 10

# Open an image
im = Image.open(INPUT_IMAGE_FILENAME)

# Paste image on white background
diam = 2*RADIUS
back = Image.new('RGB', (im.size[0]+diam, im.size[1]+diam), (255,255,255))
back.paste(im, (RADIUS, RADIUS))

# Create blur mask
mask = Image.new('L', (im.size[0]+diam, im.size[1]+diam), 255)
blck = Image.new('L', (im.size[0]-diam, im.size[1]-diam), 0)
mask.paste(blck, (diam, diam)) 

# Blur image and paste blurred edge according to mask
blur = back.filter(ImageFilter.GaussianBlur(RADIUS/2))
back.paste(blur, mask=mask)
back.save(OUTPUT_IMAGE_FILENAME)

原图(作者 - Irene Mei):

猫咪

粘贴在白色背景上:

小猫粘贴在白色背景上

模糊区域(粘贴蒙版):

模糊区域

结果:

带有羽毛(模糊)边缘的小猫的图像


推荐阅读