2015-11-10 64 views
0

我正在使用枕头从图像中剪出一个形状。要做到这一点,我使用了一个alpha遮罩,它包含我需要的形状的黑白图像。当我使用枕头敷贴面具时,我留下了一幅图像的抠图,就像我想要的那样,但它是由来自不同文件夹的完全不相关的图片勾勒出来的。使用错误蒙版的Python枕头

我使用的面具是这个: enter image description here

当我从interwebs(this one to be exact)随机图片结合起来,我得到这个结果: enter image description here

白图像周围的边框位于与工作区域不同的文件夹中,并且永远不会被我的代码引用。 enter image description here

我根本不知道枕头是如何得到白色边框的。这真的很令人沮丧。有人知道为什么发生这种情况?

仅供参考,这里的代码,以及:

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和前景是从谷歌的随机图像。

编辑:改变面具只是一个简单的矩形给出了相同的结果,所以改变面具没有帮助。

+0

答案是显而易见的:你认为你运行的代码,你在这里展示的是*不是你实际运行的代码。或者,或者'fg.png'已经包含了前一步的边界。 –

+0

我绝对运行正确的代码,前景图片绝对没有边界。我已经多次改变了工作目录,以确保我运行正确的代码,并重新从谷歌下载了前台,但仍然是同样的问题。 – watswat5

+0

将全路径名放入'open'调用中,以加倍确保您获得正确的文件。在打开图像后立即在图像上放上一个“show”,以确保三重奏。 –

回答

0

重新生成新的背景图像后,神秘的边框消失了。尽管Gimp没有展示任何东西,但最初的背景图像通过一些阿尔法诡计或其他东西隐藏了边界。