欢迎访问宙启技术站
智能推送

Python中利用PIL.ImageChopsdifference()函数对比图像的不同

发布时间:2023-12-17 20:00:22

PIL库是Python中最常用的图像处理库之一,提供了许多方便的函数来进行图像处理和分析。ImageChops模块是PIL库中的一个子模块,提供了一些比较和操作图像的函数。其中,ImageChops.difference()函数是用于比较两个图像之间的不同之处的函数。

下面是一个使用ImageChops.difference()函数的例子:

from PIL import Image, ImageChops

def compare_images(image1, image2):
    # 打开两个图像文件
    img1 = Image.open(image1)
    img2 = Image.open(image2)

    # 使用ImageChops.difference()函数对比两个图像
    diff = ImageChops.difference(img1, img2)

    # 找到不同之处的边界
    bbox = diff.getbbox()

    if bbox:
        # 如果存在不同之处,则标记出来
        diff_img = img2.copy()
        draw = ImageDraw.Draw(diff_img)
        draw.rectangle(bbox, outline='red')

        # 显示对比后的图像
        diff_img.show()
    else:
        print("两张图像完全一样!")

# 调用函数比较两张图像
compare_images("image1.jpg", "image2.jpg")

这个例子中,我们首先通过PIL库的Image.open()函数打开了两个图像文件。然后,使用ImageChops.difference()函数对比了这两个图像,并得到了一个代表差异的图像diff。我们可以通过diff.getbbox()函数获取到不同之处的边界,用于标记出图像中的不同之处。如果两个图像完全相同,bbox为None,即两张图像完全一样。

在这个例子中,我们假设有两张名为"image1.jpg"和"image2.jpg"的图像文件。如果两张图像之间有差异,我们将在"image2.jpg"中标记出这些差异,并显示结果图像;如果两张图像完全相同,则输出"两张图像完全一样!"。

注意,要运行这个例子,你需要先安装PIL库。可以使用pip命令进行安装:

pip install pillow

这个例子只是演示了ImageChops.difference()函数的基本用法。根据具体的需求,你可以进一步扩展这个例子,比如可以通过计算不同之处的数量或者像素点的差异程度来进行图像的相似度分析。