引自免费微信小程序:皆我百晓生
为了验证两张图像是否完全相同,我们可以采用一种简单的方法:计算两幅图像的哈希值。哈希函数可以将任何长度的数据映射为固定长度的输出,且相同的输入总是产生相同的输出。在本例中,我们将使用Perceptual Hashing(pHash)方法,它是一种用于比较图片相似性的算法,特别适合于检测图片是否经过旋转、缩放或压缩。
首先,确保已经安装了必要的库:
pip install imagehash
接下来,我们编写一个Python函数,使用PyTorch加载图像并计算其pHash值,然后比较这两个值以确定图片是否相同。
import numpy as np
from PIL import Image
from imagehash import phash, dhash, avg_hash
def compare_images(image_path_1, image_path_2, hash_function=phash):
# 加载图像
img_1 = Image.open(image_path_1)
img_2 = Image.open(image_path_2)
# 调整图像大小为8x8像素,以便计算pHash
img_1 = img_1.resize((8, 8))
img_2 = img_2.resize((8, 8))
# 计算哈希值
hash_1 = hash_function(img_1)
hash_2 = hash_function(img_2)
# 比较哈希值
return np.array_equal(hash_1, hash_2)
# 使用函数比较两个图像文件
are_identical = compare_images('image1.jpg', 'image2.jpg')
print("Images are identical:", are_identical)
这个函数接受两个图像路径作为参数,并使用phash
作为默认的哈希函数。如果你想要尝试其他类型的哈希(例如dHash或avgHash),只需更改hash_function
参数即可。函数返回一个布尔值,表示两张图像是否完全相同。
注意,这种方法对于简单的旋转、缩放和压缩是敏感的,但对于更复杂的图像处理(如内容上的改变)可能不那么有效。如果你想进行更精确的图像比较,可能需要使用深度学习方法,比如Siamese网络或Feature Matching。这些方法较为复杂,通常需要大量的训练数据和计算资源。如果你对这些高级方法感兴趣,我可以提供更多的指导和代码示例。