【问题标题】:How to hide overlapping pixels using Pillow?如何使用 Pillow 隐藏重叠像素?
【发布时间】:2018-09-22 10:19:24
【问题描述】:
我有两张类似尺寸的图片:
由于外圆应该有接近重叠的像素,我想要一个结果图像,其中包含图像 A 的内圆和图像 B 的正方形。我认为反转图像 A 然后调用 PIL.Image.composite(imageA, imageB, mask) 就可以了一些东西,但它只是给了我一个 imageA 和 imageB 的组合。
有没有办法使用 Pillow 或使用 numpy 以某种方式使两个图像之间相似的像素变为白色?
【问题讨论】:
标签:
python
python-3.x
numpy
python-imaging-library
【解决方案1】:
我认为您正在寻找两个图像之间的异或。
如果你不做很多逻辑表达式评估,我会慢慢处理它,所以从 OR 开始,你会得到白色像素,结果是 图像 A OR 图像 B 具有白色像素。然后使用 AND,您将在图像 A AND 图像 B 都是白色的地方得到白色像素。最后,使用 XOR,您将在图像 A 或图像 B 但仅一个或另一个但不是两者都有白色像素的地方得到白色像素。
在代码中,如下所示:
#!/usr/local/bin/python3
from PIL import Image, ImageChops
# Load up the two images, discarding any alpha channel
im1 = Image.open('im1.png').convert('1')
im2 = Image.open('im2.png').convert('1')
# XOR the images together
result = ImageChops.logical_xor(im1,im2)
result = ImageChops.invert(result)
# Save the result
result.save('result.png')