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

2024-04-20 03:33:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下两张图片

image 1image 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。有没有更好的方法使用这两个库?你知道吗


Tags: in图像imageforsizepil图片range
1条回答
网友
1楼 · 发布于 2024-04-20 03:33:21

curr* np.any(prev!=curr, axis=2, keep_dims=True)

如果currprev是numpy数组,并且您想在curr==prev的索引处用0替换,那么您可以做np.any(prev!=curr, axis=2)得到一个二进制掩码,它将是1,其中prevcurr不相等,其他地方为零。然后你可以把它和curr相乘。你知道吗

相关问题 更多 >