different Hash算法
dHash中文叫差异哈希算法,在对图片进行哈希转换时,通过左右两个像素大小的比较,得到最终哈希序列。相比于aHash算法。dHash速度快,判断效果也要好。
实现过程
python代码实现
from PIL import Image
import numpy as np
def Get_hash(img):
hash = ''
image = Image.open(img)
image = np.array(image.resize((9, 8), Image.ANTIALIAS).convert('L'), 'f')
for i in range(8):
for j in range(8):
if image[i, j] > image[i, j + 1]:
hash += '1'
else:
hash += '0'
print(hash)
hash = ''.join(map(lambda x: '%x' % int(hash[x: x + 4], 2), range(0, , 4)))
return hash
def Get_Hamming(hash1, hash2):
Hamming = 0
for i in range(len(hash1)):
if hash1[i] != hash2[i]:
Hamming += 1
return Hamming
def run():
hash1 = Get_hash(r'D:\cjk1.png')
hash2 = Get_hash(r'D:\cjk2.png')
Hamming = Get_Hamming(hash1, hash2)
print(hash1)
print(hash2)
print(Hamming)
run()