两张具有透明度的图像之间的差异

时间:2018-10-08 22:40:09

标签: python numpy python-imaging-library

我有以下2张图片

image 1 image 2

我正在尝试实现以下结果(图像具有透明度)。

difference

我当前的解决方案是“强行”区别,但这确实没有效率。 (prevcurrImage对象)。

def compare(prev, curr):
    out = PIL.Image.new("RGBA", curr.size)
    width, height = curr.size
    for x in range(width):
        for y in range(height):
            if prev.getpixel((x, y)) == curr.getpixel((x, y)):
                out.putpixel((x, y), (0, 0, 0, 0))
            else:
                out.putpixel((x, y), (*curr.getpixel((x,y)),))
    return out

我可以访问PIL和numpy。使用这两个库还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

curr

如果prevcurr==prev是numpy数组,并且您想在索引np.any(prev!=curr, axis=2)处替换为0,则可以执行prev来获取二进制掩码在currtidyr::unite()不相等的情况下为1,在其他地方为零。然后可以将其乘以curr。