使用 PIL 查找图像之间的差异

pythonserver side programmingprogramming

在图像处理中,查找两幅图像之间的差异是各种应用中的关键步骤。了解两幅图像之间的差异至关重要,这可以帮助我们检测变化、识别对象和其他相关应用。在本博客中,我们将探讨如何使用 Python 图像库 (PIL) 查找两幅图像之间的差异。

安装和语法

要使用 PIL,我们需要使用 pip 包管理器安装它。我们可以通过在终端中运行以下命令来安装 PIL −

pip install pillow

要使用 PIL 查找两幅图像之间的差异,我们可以使用 ImageChops 模块。ImageChops 模块提供对图像的各种操作,包括查找两幅图像之间的差异。使用 PIL 查找两幅图像之间的差异的语法如下 −

from PIL import Image, ImageChops

# 查找差异
diff = ImageChops.difference(img1, img2)

# 显示差异
diff.show()

算法

  • 导入所有必要的模块,例如用于图像比较的 ImageChops 模块和用于图像处理的 PIL 模块。

  • 应使用 PIL 模块提供的 Image.open() 函数打开需要比较的两张图片。

  • 要确定两张图片之间的差异,请使用 ImageChops.difference() 函数。此函数在接收两个图像对象作为输入后,将返回一个新的图像对象,该对象表示两个输入图片之间逐像素差异的绝对值。

  • 最终图像将为灰度图像,白色像素表示两张照片之间的差异区域,黑色像素表示没有差异。

  • 使用 Image 模块提供的 show() 函数显示差异图片。这将在新窗口中显示不同的图像。

  • Image 模块的 save() 方法是将各种图片保存到文件的可选方法。此方法使用文件名和格式作为输入将图片保存到所选文件中。

注意 - 请记住,要比较的两幅图像的大小和分辨率应该相同,否则,差异图像可能无法准确表示两幅图像之间的差异。

下载并将以下图像重命名为beach.jpg 和 beach2.jpg

示例 1

from PIL import Image, ImageChops

# 打开图像
img1 = Image.open('image1.jpg')
img2 = Image.open('image2.jpg')

# 查找差异
diff = ImageChops.difference(img1, img2)

# 显示差异
diff.show()

此代码打开两幅图像 image1.jpgimage2.jpg,并使用 ImageChops.difference() 方法查找它们之间的差异。然后,它使用 show() 方法显示 不同的 图像。

示例 2

from PIL import Image, ImageChops

# 打开图像
img1 = Image.open('beach.jpg')
img2 = Image.open('beach2.jpg')

# 调整图像大小
img1 = img1.resize((400, 400))
img2 = img2.resize((400, 400))

# 查找差异
diff = ImageChops.difference(img1, img2)

#阈值差异图像
阈值 = 50
diff = diff.point(lambda x: 0 if x < 阈值 else 255)

# 显示差异
diff.show()

此代码打开两个图像,image1.png 和 image2.png,并将它们的大小调整为 400x400。然后使用 ImageChops.difference() 方法找到两个图像之间的差异。然后使用 point() 方法将差异图像的阈值设置为 50。最后,使用 show() 方法显示差异图像。

应用

  • 通过查看图片之间的区别,可以发现观察电影或照片中的变化。

  • 它还可用于发现和强调图像处理应用中的视觉变化,例如用于医学成像以定位肿瘤或其他异常的视觉变化。

  • 在法医调查中,比较监控录像可以帮助发现嫌疑人或发现新证据,这种方法特别有用。

  • 此外,它往往用于现代应用中,以筛选硬件并查明任何变化或细分。

结论

在本课中,我们学习了如何使用 Python 的 Python 图像库 (PIL) 来确定两张照片之间的差异。安装 PIL 并导入所需的模块是第一步。然后,讨论了两种确定两张照片之间差异的方法 - 第一种技术是使用函数 ImageChops.difference(),这是一种快速简便的方法来确定两张图片之间的差异,第二种技术包括使用 NumPy 从两张照片中减去像素值以创建突出显示差异的新图像。最后,我们讨论了图片差异检测的一些潜在用途。


相关文章