详解用Python找出两张图片的区别

  • Post category:Python

要用Python找出两张图片之间的区别,一般就需要比较两张图片中每个像素的RGB值,然后将不同的像素标记出来。下面是Python找出两张图片的区别的完整攻略。

Step 1: 安装必要的Python库

首先需要安装Python的图像处理库 pillow,可以用以下命令进行安装:

pip install pillow

Step 2: 加载图片

使用 pillow 库中的 Image 模块,可以很容易地将图片加载进Python中,代码如下:

from PIL import Image

img1 = Image.open('image1.jpg')
img2 = Image.open('image2.jpg')

这里我们假设要比较两张名为 image1.jpgimage2.jpg 的图片。

Step 3: 比较图片

我们可以使用 numpy 库将两张图片转换为数组,然后使用数组操作比较两张图片。

import numpy as np

arr1 = np.array(img1)
arr2 = np.array(img2)

diff = arr1 - arr2

这样操作后,得到的 diff 数组中每个元素表示了两张图片相差的像素值,可以通过该数组找到每个差异像素的位置。

Step 4: 可视化结果

为了更加直观地展示两张图片之间的区别,可以将差异像素用红色标记出来,然后将结果保存至新的图片中。

diff[diff != 0] = 255
diff_img = Image.fromarray(diff.astype(np.uint8))
diff_img.save('diff.jpg')

这里我们将差异像素的值设置为255,表示用红色来标记。将结果保存至名为 diff.jpg 的新图片中。

示例说明

以下是用Python比较两张图片的一个示例:

from PIL import Image
import numpy as np

img1 = Image.open('image1.jpg')
img2 = Image.open('image2.jpg')

arr1 = np.array(img1)
arr2 = np.array(img2)

diff = arr1 - arr2
diff[diff != 0] = 255
diff_img = Image.fromarray(diff.astype(np.uint8))
diff_img.save('diff.jpg')

运行该代码之后,会得到一张名为 diff.jpg 的新图片,其中红色标记的地方表示两张图片不同。

另一个示例是比较两张PNG格式的图片:

from PIL import Image
import numpy as np

img1 = Image.open('image1.png')
img2 = Image.open('image2.png')

arr1 = np.array(img1)
arr2 = np.array(img2)

diff = arr1 - arr2
diff[diff != 0] = 255
diff_img = Image.fromarray(diff.astype(np.uint8))
diff_img.save('diff.png')

这个示例与之前的示例类似,但需要注意到图片的格式不同。输出结果需要保存为 diff.png