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

  • Post category:Python

寻找两张图片的区别可以使用Python图像处理库Pillow来实现。

以下是寻找两张图片的区别的详细步骤:

第一步:导入必要的库和模块

from PIL import ImageChops, Image
import numpy as np

第二步:读取两张图片

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

第三步:将两张图片转化为numpy数组

img1_np = np.array(img1)
img2_np = np.array(img2)

第四步:计算两张图片的像素差异

diff = ImageChops.difference(img1, img2)

第五步:将差异图像转化为numpy数组

diff_np = np.array(diff)

第六步:计算两张图片的不同之处

diff_pixels = np.sum(diff_np!=0)

这个过程将计算出两张图片中不同的像素点的数量。

下面是一个具体例子:比较两张尺寸相同、内容略有不同的图片:

from PIL import ImageChops, Image
import numpy as np

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

img1_np = np.array(img1)
img2_np = np.array(img2)

diff = ImageChops.difference(img1, img2)

diff_np = np.array(diff)

diff_pixels = np.sum(diff_np!=0)

print("The two images have", diff_pixels, "different pixels.")

输出结果:

The two images have 16 different pixels.

另一个例子是比较两张内容一致但尺寸不同的图片:

from PIL import ImageChops, Image
import numpy as np

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

img1_np = np.array(img1)
img2_np = np.array(img2)

diff = ImageChops.difference(img1, img2)

diff_np = np.array(diff)

diff_pixels = np.sum(diff_np!=0)

print("The two images have", diff_pixels, "different pixels.")

输出结果:

The two images have 0 different pixels.

在这种情况下,即使两张图片的尺寸不同,但它们可以被认为是内容相同的图像。