我使用ImageChops检查两个图像是否不同,方法是:
currentPic = Image.open('current.png').convert('RGB')
previousPic = Image.open('previous.png').convert('RGB')
diff = ImageChops.difference(currentPic, previousPic)
if diffUserHome.getbbox():
print("Images are different herey !!")
我试图修改此代码以检查这两个图像是否相同。 你知道我用ImageChops库检查两张图片是否完全相同的方法吗
我不会在这里使用
ImageChops.difference
,因为它不能处理不同的图像modes,cf尽管两幅图像完全相同(w.r.t.像素的强度),但我们得到以下结果
ValueError
:总的来说,我同意使用NumPy的矢量化功能来加快计算速度,但也可能有一种非常简单的方法:
ImageChops.difference
实际的作用),但确保支持任何两种图像模式。这与单通道图像和多通道图像略有不同李>0
,则图像必须不同李>这就是我的代码:
对于某些图像,代码原样将返回:
另外,对于开头提到的情况,我们将得到这个输出。然而,对于一些输入,例如
最有可能的结果是:
直接转换为模式
F
将导致单个强度值的某些分数部分,因此,与普通转换为模式L
不同如果您有代码失败的用例,请让我知道。我很好奇,我是否错过了一些边缘案例
函数的作用是:将两幅图像逐像素相减,从而为您创建一幅新图像。如果生成的图像完全为黑色,则提取的图像完全相同。这是因为黑色的rgb值为{0,0,0}。函数的作用是:计算图像中非零区域的边界框。如果该函数找不到非零点,则返回0。使用这些函数,可以生成如下简单函数
可以使用^{} 获取差分图像的所有像素值。将这些值转换为一个NumPy数组可以很容易地对所有像素值求和。当且仅当原始两幅图像之间的所有像素值相同时,该和为零,因为像素值不能为负
相关问题 更多 >
编程相关推荐