如果存在 GIF 格式的网络横幅,我使用 python 来检查数百个网站。我有一个包含 gif 文件作为示例的文件夹,我将每个网站的 gif 文件与我自己的示例文件进行比较。我使用 filecmp 但我发现许多网站压缩 gif 文件,因此即使文件在视觉上相同,filecmp 也不会检测到相同。
即使分辨率发生了变化,是否有任何 python 库可以检测两个 gif 文件或视频是否相似?
问问题
48 次
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)
在您的情况下,MSE 可能也可以正常工作。但是,如果图像的平均亮度因某种过程而改变,您需要首先从每张图像中减去它。
如果调整大小是唯一的问题,那应该是它。但是,如果图像可能已被翻转、旋转或裁剪,则可能需要额外的步骤。
于 2021-09-26T21:11:45.607 回答