图像哈希库
ImageHash的Python项目详细描述
用python编写的图像哈希库。imagehash支持:
基本原理
为什么我们不能使用MD5、SHA-1等?
不幸的是,我们不能在实现中使用加密哈希算法。由于加密散列算法的性质,输入文件中的微小更改将导致本质上不同的散列。在图像指纹的情况下,我们实际上希望相似的输入也有相似的输出散列。
要求
基于PIL/枕头图像,numpy和scipy.fftpack(用于phash) 通过pypi轻松安装。
基本用法
>>> from PIL import Image >>> import imagehash >>> hash = imagehash.average_hash(Image.open('test.png')) >>> print(hash) d879f8f89b1bbf >>> otherhash = imagehash.average_hash(Image.open('other.bmp')) >>> print(otherhash) ffff3720200ffff >>> print(hash == otherhash) False >>> print(hash - otherhash) 36
演示脚本find_similar_images演示了如何在目录中找到类似的图像。
托管在github的源代码:https://github.com/JohannesBuchner/imagehash
更改日志
- 4.0:已将二进制实现更改为十六进制实现,因为前一个实现因散列大小不同而中断。此更改破坏了与以前存储的哈希的兼容性;若要从旧编码转换它们,请使用“old_hex_to_hash”函数。
- 3.5:图像数据处理速度加快
- 3.2:whash现在还处理比散列图像小的图像
- 3.0:dhash有一个缺陷:它是垂直计算像素差异的,而不是水平计算的。
- 我把它改成了dHash。旧功能可用作dhash_vertical。
- 2.0:添加whash
- 1.0:初始ahash、dhash、phash实现。