首页 > 解决方案 > Python Pillow diff 操作没有得到正确的结果

问题描述

我正在按照此处的答案在两个图像之间执行差异。不知道为什么这条线在 Python 3 中不起作用。代码在>>>操作员处失败。

diff_list_tuples = >>> [diff[0:2], diff[2:]] if diff else [(None, None), (None, None)]

所以我按照第一种方法的修改:

from PIL import Image
from PIL import ImageChops
from PIL import ImageDraw

file1 = 'file1.jpg'
file2 = 'file2.jpg'

im1 = Image.open(file1)
im2 = Image.open(file2)

diff = ImageChops.difference(im1, im2)
draw = ImageDraw.Draw(im2)
diff_list = list(diff.getbbox()) if diff.getbbox() else []
draw.rectangle(diff_list)
im2.convert('RGB').save('file3.jpg')

我不太明白出了什么问题,但它总是给我第二个文件的精确副本。任何线索将不胜感激。


环顾四周,我偶然发现了这篇文章。只需通过以下方式即可实现所需的结果:

if diff.getbbox():
    diff.save('file3.jpg')

清除后,有人可以向我解释失败的方法到底想做什么,为什么失败?只是为了学习目的。

标签: pythonpython-imaging-library

解决方案


推荐阅读