Python ImageChops.difference不使用简单的png图像

Python ImageChops.difference不使用简单的png图像,python,python-3.x,ubuntu,python-imaging-library,png,Python,Python 3.x,Ubuntu,Python Imaging Library,Png,我正在创建一个简单的脚本来检查图像是否相同或不同 我的代码适用于jpg文件,但不适用于png文件 出于某种原因,我下面的代码认为以下png: 如下所示 我在Ubuntu上运行这个。我不确定我做错了什么。任何帮助都很好,谢谢 在@Mark's help之后的工作代码:不是100%确定这里发生了什么,但是如果您使用ImageMagick将两张图像分割成各自的通道并并排放置通道: magick 1.png -separate +append 1ch.png 您可以看到红色、绿色和蓝色通道都包

我正在创建一个简单的脚本来检查图像是否相同或不同

我的代码适用于jpg文件,但不适用于png文件

出于某种原因,我下面的代码认为以下png:

如下所示

我在Ubuntu上运行这个。我不确定我做错了什么。任何帮助都很好,谢谢


在@Mark's help之后的工作代码

不是100%确定这里发生了什么,但是如果您使用ImageMagick将两张图像分割成各自的通道并并排放置通道

magick 1.png -separate +append 1ch.png

您可以看到红色、绿色和蓝色通道都包含形状,但是有一个多余的alpha通道(最右边的区域)没有任何用途-除了混淆PIL

如果您更改代码以像这样删除alpha通道,那么它将起作用:

img1 = Image.open('1.png').convert('RGB') 
img2 = Image.open('2.png').convert('RGB')
diff = ImageChops.difference(img2, img1)

diff.getbbox()
(28, 28, 156, 156)
差异图像:


我还注意到ImageChops.difference上说“其中一个图像必须是“1”模式”,不知道这是否是问题。

非常感谢,@Mark!这让我快发疯了☺谢谢我有一些类似的代码,可以在Pillow2.5.0和7.0.0中使用,但不能在7.1.0和更高版本中使用。一旦我把图像转换成“RGB”,它又能工作了。
img1 = Image.open('1.png').convert('RGB') 
img2 = Image.open('2.png').convert('RGB')
diff = ImageChops.difference(img2, img1)

diff.getbbox()
(28, 28, 156, 156)