介绍
每张图片都有一个唯一性的指纹。就好像人类的指纹可以识别出这个人类似。
图片指纹是什么?(图片哈希)
- 用图片指纹进行相似图片的检测。这种技术通常被称为“感知图像hash”或是简单的“图片hash”。
- 图片hash是检测一张图片的内容然后根据检测的内容为图片建立一个唯一值的过程。
- 比如,给定一张图片作为输入,应用一个hash函数,然后基于图片的视觉计算出一个图片hash。相似的图片也应当有相似的hash值。
- 将会使用“差别Hash”或简单的DHash算法计算图片指纹。简单来说,DHash算法着眼于两个相邻像素之间的差值。然后,基于这样的差值,就建立起一个hash值了。
为什么不使用md5,sha-1等算法?
我们不能在实现中使用加密hash算法。由于加密hash算法的本质使然,输入文件中非常微小的差别也能造成差异极大的hash值。我们实际上希望相似的输入可以有相似的hash输出值。
安装相关库
pip install Pillow
pip install ImageHash
pip install numpy
pip install scipy
开始使用
获取图片指纹
from PIL import Image
import imagehash
# 给一张图片
img1 = Image.open('images/demo4.jpg')
res = imagehash.dhash(img1) # 4f999cc90979704c
计算汉明距离
汉明距离被用于计算一个哈希中的不同位数。因此,哈希中只有一位不同的两张图片自然比有10位不同的图片更相似。