Python实现图像哈希算法——感知哈希算法
感知哈希算法(Perceptual Hash Algorithm)是一种可以对图像进行哈希操作的算法,简称为pHash。该算法通过将图片压缩、缩小再转化为灰度图,然后计算出每个像素点的灰度平均值,得到一个64位的哈希值,表示了该图片的特征信息。通过比较两幅图片的哈希值之间的汉明距离来确定图片的相似程度。
下面我们就来实现这个算法,让它可以应用于实际的图片处理中。
代码实现:
首先,需要导入所需的库:cv2、numpy、hashlib等。
import cv2
import numpy as np
import hashlib
接下来,我们定义一个函数phash,该函数用于实现感知哈希算法。该函数接收一个图片路径作为输入,并返回该图片的64位哈希值。
def phash(img_path):
# 1. 加载图片
img = cv2.imread(img_path)
# 2. 缩小图片并转换为灰度图
img = cv2.resize(img, (8, 8))
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 3. 计算灰度平均值
avg_gray = np.mean(gray)
# 4. 比较像素灰度值与平均值,生成哈希值