我有以下2张图片
我正在尝试实现以下结果(图像具有透明度)。
我当前的解决方案是“强行”区别,但这确实没有效率。 (prev
和curr
是Image
对象)。
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。使用这两个库还有更好的方法吗?
答案 0 :(得分:1)
curr
如果prev
和curr==prev
是numpy数组,并且您想在索引np.any(prev!=curr, axis=2)
处替换为0,则可以执行prev
来获取二进制掩码在curr
和tidyr::unite()
不相等的情况下为1,在其他地方为零。然后可以将其乘以curr。