PIL Python,在不丢失原始图像特定颜色的情况下对图像进行遮罩

PIL Python,在不丢失原始图像特定颜色的情况下对图像进行遮罩,python,python-imaging-library,Python,Python Imaging Library,使用PIL,我想在其他图像上屏蔽一个图像 但是,我想保留原始图像的黑色轮廓 示例: 下面是我尝试过的代码。我有不同的形状(圆形、心形、三角形),都有黑色的轮廓。我想在不丢失原始图像的黑色轮廓的情况下将遮罩覆盖在这些形状上,但我不确定如何做到这一点 whead = whead.resize((200, 240)) data = np.array(whead) red, green, blue, alpha = data.T white_areas = (red == 222) &

使用PIL,我想在其他图像上屏蔽一个图像

但是,我想保留原始图像的黑色轮廓

示例:

下面是我尝试过的代码。我有不同的形状(圆形、心形、三角形),都有黑色的轮廓。我想在不丢失原始图像的黑色轮廓的情况下将遮罩覆盖在这些形状上,但我不确定如何做到这一点

whead = whead.resize((200, 240))
data = np.array(whead)  
red, green, blue, alpha = data.T 
white_areas = (red == 222) & (blue == 222) & (green == 222)
data[..., :-1][white_areas.T] = ImageColor.getrgb(headhex)
whead2 = Image.fromarray(data)
img.paste(whead2, (0, 30), whead2)

facemask1 = facemask1.resize((200, 240))
data = np.array(facemask1)  
red, green, blue, alpha = data.T 
white_areas = (red == 23) & (blue == 0) & (green == 255)
data[..., :-1][white_areas.T] = ImageColor.getrgb(facemask1hex)
facemask12 = Image.fromarray(data)
img.paste(facemask12, (0, 30), whead2)


既然您要求的是
PIL
解决方案,请尝试
PIL.ImageChops.multiply

请确保您的图像颜色仅为白色。而且你需要使你的背景透明——如果你的工具不支持alpha频道,那么有很多基于web的背景移除工具可以帮助你


文件夹 mask.png

outline.png


代码
从PIL导入图像,ImageChops
source=Image.open(“outline.png”)
source=source.convert(“RGBA”)
mask=Image.open(“mask.png”)
掩码=掩码转换(“RGBA”)
输出=图像压缩倍增(源、掩码)
保存(“output.png”)
您需要匹配图像模式,例如,mask.png处于RGB模式,outline.png处于RGBA模式,这将导致
ValueError:图像不匹配

output.png

如果将遮罩的橙色部分置为白色,则可以将两幅图像相乘,使边框变暗