在Python中比较两个图像的简单方法

在Python中比较两个图像的简单方法,python,image,Python,Image,我需要从Windows 10中的“资产”文件夹复制图像,该文件夹自动下载背景图像。其中一些图像将永远不会显示,并在某个时候被删除。为了确保在删除所有新图像之前看到它们,我创建了一个Python脚本,将这些图像复制到另一个文件夹中。为了提高效率,我需要一种方法来比较两个只复制新图像的图像。我所需要做的就是有一个函数,可以获取两个图像,用一种简单的方法比较它们,以确保两个图像在视觉上不完全相同。一个简单的测试是将一个图像文件复制并比较副本和原始图像,在这种情况下,函数应该能够判断这些图像是相同的。

我需要从Windows 10中的“资产”文件夹复制图像,该文件夹自动下载背景图像。其中一些图像将永远不会显示,并在某个时候被删除。为了确保在删除所有新图像之前看到它们,我创建了一个Python脚本,将这些图像复制到另一个文件夹中。为了提高效率,我需要一种方法来比较两个只复制新图像的图像。我所需要做的就是有一个函数,可以获取两个图像,用一种简单的方法比较它们,以确保两个图像在视觉上不完全相同。一个简单的测试是将一个图像文件复制并比较副本和原始图像,在这种情况下,函数应该能够判断这些图像是相同的。
如何在python中比较两个图像?我需要简单有效的方法来做这件事。我读到的几个答案有点复杂。

比较python中的两个图像

选项1: 使用模块,它包含许多算术图像操作,称为通道操作(“CHAPS”)。这些可以用于各种用途,包括特效、图像合成、算法绘画等

示例:

图像差异(图像1、图像2)⇒ 形象

返回两个图像之间差值的绝对值。
out=abs(图1-图2)

选项2:

是一个用于SciPy的图像处理工具箱

在scikit图像中,请使用计算两幅图像之间的平均结构相似性指数

参考文献:


我以前遇到过类似的问题。我使用PIL.Image.tobytes()将图像转换为byte对象,然后调用byte对象上的hash()并比较哈希值。

你说的“比较”是什么意思?精确的像素值或类似的不同质量的图像?比较功能只需要返回“相同”或“不同”?我想你看到的复杂答案是比较实际图像。你真的不需要这么做。您只需要测试两个文件是否包含完全相同的字节。最简单的方法是比较这些文件的哈希值。您可以使用(例如)标准
hashlib
模块中的MD5或SHA-256。它们是图像是否重要?如果你有一个解决方案,无论文件是什么,它都能同样好地工作吗?看看这里的答案:根据你的经验,你遇到过这样的情况吗?不,我只是用它捕获一些屏幕截图,并确保我不会复制副本。除非您正在处理数以十亿计的图像,否则我不会担心冲突。@Amani我强烈建议您为此使用
hashlib
中的加密哈希函数,而不是内置的
hash
,以减少哈希冲突的机会。而且实际上没有必要使用
PIL.Image.tobytes
,除非您已将图像文件转换为不同的图像文件格式。只使用文件中字节的散列。