1

如果存在 GIF 格式的网络横幅,我使用 python 来检查数百个网站。我有一个包含 gif 文件作为示例的文件夹,我将每个网站的 gif 文件与我自己的示例文件进行比较。我使用 filecmp 但我发现许多网站压缩 gif 文件,因此即使文件在视觉上相同,filecmp 也不会检测到相同。
即使分辨率发生了变化,是否有任何 python 库可以检测两个 gif 文件或视频是否相似?

4

1 回答 1

0

比较两个图像的相似性是一个通用的图像处理问题,因此您开发的解决方案可以像您希望的那样简单或复杂。在您的特定情况下,您需要一种使两个图像大小相同的方法和一种比较图像的方法。

首先,您可能希望将图像转换为 RGB 或灰度数组以进行比较。

我建议将较大图像的大小减小到较小图像的大小。与增加较小图像的大小相比,这不太可能引入伪影。可以使用 Python Pillow 库来调整大小。

Image.resize(size, resample=None, box=None, reducing_gap=None)

https://pillow.readthedocs.io/en/stable/reference/Image.html

重采样方法可能对相似性度量有一些小的影响。但是,您可能只需使用 resample = NEAREST 就可以了。

确保图像大小相同后,必须进行比较。可以使用均方误差 (MSE) 或结构相似性 (SSIM) 来比较它们。幸运的是,SSIM 已经在 scikit-image 中实现。

from skimage.metrics import structural_similarity as ssim

s = ssim(imageA, imageB)

https://www.pyimagesearch.com/2014/09/15/python-compare-two-images/?_ga=2.129476107.608689084.1632687977-376301729.1627364626

在您的情况下,MSE 可能也可以正常工作。但是,如果图像的平均亮度因某种过程而改变,您需要首先从每张图像中减去它。

如果调整大小是唯一的问题,那应该是它。但是,如果图像可能已被翻转、旋转或裁剪,则可能需要额外的步骤。

于 2021-09-26T21:11:45.607 回答