python - 使用 Python Pillow(或 PIL)增加 JPG 上的 PNG mask 区域

标签 python image-processing python-imaging-library

我正在尝试使用 png 黑色/透明 mask 来 mask jpg 图像,但由于锯齿和边框模糊,我总是在输出中输出原始 jpg 的轮廓线。

由于任务不需要图形精度,因此可以通过将 mask 区域增加几个像素来轻松解决这个问题。

例如,如果 mask 区域允许以 100 像素为中心的圆,只需将圆“扩展”一些像素即可解决问题。

有没有办法用 Pillow 来实现这一点?

最佳答案

我找到了解决办法;我把它写下来,以便其他人在需要时可以受益:

1) 对蒙版应用高斯模糊。这将用阴影“扩展”边框

1b) 仅在需要时转换为黑/白色

2) 应用基于阈值将每个像素转换为黑色或白色的转换。不允许使用其他颜色

所以类似的东西:

blackThreshold = 128.0
img = img.filter(ImageFilter.GaussianBlur(radius=3))
r,g,b,a = img.split() # supposing to have a RGBA PNG
gray = Image.merge('L',(a,)) # 
gray = gray.point(lambda x: 0 if x<blackThreshold else 255)

关于python - 使用 Python Pillow(或 PIL)增加 JPG 上的 PNG mask 区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36968571/

相关文章:

python - 在pygame<外星人入侵>中,为什么我的外星人只出现一排?

用于元组列表的 Python pool.map

matlab - 在matlab中融合超过2张图像

python - 如何使用 Python 图像库(PIL/Pillow)检测图像是否为渐进式 JPEG?

python - 如何为所有 ctype 结构类设置 __str__ 方法?

python - 如何在Python中设置临时目录路径?

php - 动态缩略图 PHP

python - 使用 patchify 库创建补丁时出现的问题

python - 将看似相同的数组写入两个图像文件会导致不同的结果

python - 使用Pipenv安装枕头时出现Pipfile.Lock问题