用python实现对比两张图片的不同

  

实现对比两张图片的不同,我们可以先通过Python的Pillow库来读取图片数据,再通过像素点的比较来判断图片之间的不同。下面是详细的攻略:

步骤一:安装Pillow库

在命令行下执行以下命令来安装Pillow库:

pip install Pillow

步骤二:读取图片数据

我们可以通过Image类从图片文件中读取图片数据,这里我们以两张图片image1.jpgimage2.jpg为例:

from PIL import Image

# 读取图片数据
image1 = Image.open("image1.jpg")
image2 = Image.open("image2.jpg")

步骤三:比较两张图片的像素点

接下来,我们可以通过对比两张图片每个像素点的RGB值来判断它们之间的差异,RGB值相同说明像素点相同,反之则不同。下面是比较两张图片像素点的代码:

# 比较两张图片的像素点
diff = 0
for i in range(image1.size[0]):
    for j in range(image1.size[1]):
        if image1.getpixel((i,j)) != image2.getpixel((i,j)):
            diff += 1

在这个例子中,我们用size属性来获取图片的宽和高,然后用两个for循环遍历每个像素点,getpixel()函数用来获取像素点的RGB值。如果两张图片对应像素点的RGB值不相同,则将差异diff加一。

步骤四:输出比较结果

最后一步,我们可以输出比较结果,即diff的值,来表示两张图片之间的差异。以下是完整的代码:

from PIL import Image

# 读取图片数据
image1 = Image.open("image1.jpg")
image2 = Image.open("image2.jpg")

# 比较两张图片的像素点
diff = 0
for i in range(image1.size[0]):
    for j in range(image1.size[1]):
        if image1.getpixel((i,j)) != image2.getpixel((i,j)):
            diff += 1

# 输出比较结果
print("两张图片之间的差异为:", diff)

示例一:比较两张相同的图片

from PIL import Image

# 读取图片数据
image1 = Image.open("image1.jpg")
image2 = Image.open("image1.jpg")

# 比较两张图片的像素点
diff = 0
for i in range(image1.size[0]):
    for j in range(image1.size[1]):
        if image1.getpixel((i,j)) != image2.getpixel((i,j)):
            diff += 1

# 输出比较结果
print("两张图片之间的差异为:", diff)

输出结果:两张图片之间的差异为: 0

示例二:比较两张不同的图片

from PIL import Image

# 读取图片数据
image1 = Image.open("image1.jpg")
image2 = Image.open("image2.jpg")

# 比较两张图片的像素点
diff = 0
for i in range(image1.size[0]):
    for j in range(image1.size[1]):
        if image1.getpixel((i,j)) != image2.getpixel((i,j)):
            diff += 1

# 输出比较结果
print("两张图片之间的差异为:", diff)

输出结果:两张图片之间的差异为: 83049

这说明,两张不同的图片之间的差异值较大,因为它们有很多不同的像素点。

相关文章