【问题标题】:Python Pillow using the Incorrect MaskPython Pillow 使用了不正确的掩码
【发布时间】:2015-11-10 16:41:24
【问题描述】:

我正在使用 Pillow 从图像中剪出一个形状。为此,我使用了一个 alpha 蒙版,其中包含我需要的形状的黑白图像。当我使用 Pillow 应用蒙版时,我会留下一个图像的剪裁,就像我想要的那样,但它是由来自不同文件夹的完全不相关的图片勾勒出来的。

我使用的面具是这个:

当我将它与来自互联网 (this one to be exact) 的随机图片结合起来时,我得到以下结果:

图像周围的白色边框与工作文件夹位于不同的文件夹中,并且从未被我的代码引用。

我不知道 Pillow 是如何获得白色边框的。这真的很令人沮丧。有人知道为什么会这样吗?

作为参考,代码如下:

from PIL import Image

def Blend_Pic():
    background = Image.open("bg.png")
    mask = Image.open("mask2.png").convert("L")
    foreground = Image.open("fg.png")

    background.paste(foreground, (0, 0), mask)
    background.show()

if __name__ == "__main__":
    Blend_Pic()

背景只是一个空的 1600x900 png,前景是谷歌的随机图像。

编辑:将蒙版更改为简单的矩形会产生相同的结果,因此更改蒙版没有帮助。

【问题讨论】:

  • 答案很明显:你认为你正在运行的代码,你在这里展示的,不是你实际运行的代码。要么,要么fg.png 已经包含上一步的边框。
  • 我运行的代码肯定是对的,前景图片绝对是没有边框的。我已经多次更改工作目录以确保我运行的是正确的代码,并且我从谷歌重新下载了前台,仍然是同样的问题。
  • 将完整路径名放入open 调用中,以确保您获得正确的文件。并在打开图片后在图片上加上show 以确保三重确定。
  • 当我用枕头显示背景图像时,它显示了我讨厌的神秘边框。但是,实际图像本身在 Gimp 和 Windows 照片查看器中显示为完全空白。我使用绝对地址来确保它是同一个。
  • 我使用边框作为基本图像(尺寸合适,我很懒),即使我从图像中删除它,它仍然显示出来。所以,我生成了一个新的空白背景并且它工作了。

标签: python image mask alpha pillow


【解决方案1】:

重新生成新的背景图片后,神秘的边框消失了。尽管 Gimp 没有显示任何内容,但原始背景图像通过一些 alpha 技巧或其他东西隐藏了边框。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多