我使用ImageHash模块来获取图像的哈希值。我有这个代码:
hashSize = 8
imghash3 = []
image = "pic1.jpg"
imghash1 = imagehash.phash(Image.open(image))
print(imghash1)
>>>d1d1f1f3f3737373
imghash2 = str(imagehash.phash(Image.open(image), hashSize))
print(imghash2)
>>>11b97c7eb158ac
imghash3.append(bin( int(imghash2, 16))[2:].zfill(64))
print(imghash3)
>>>['0000000000010001101110010111110001111110101100010101100010101100']
因此imagehash1
是该模块的基本用法。在
现在我不明白的是hashSize
对imagehash2
中的原始字符串进行了什么样的转换,以及第三个函数如何将imagehash2
转换为64位字符串。在
在
phash
计算期间,原始图像将调整大小。hashSize
参数基本上控制调整后图像的高度和宽度。在算法可以找到here。实施第一步(缩小规模):
参见^{} 的来源
让我们看看
^{pr2}$imghash3.append(bin( int(imghash2, 16))[2:].zfill(64))
行的作用。在首先,它将十六进制字符串转换为整数
内置的^{} 函数用于将整数转换为二进制字符串
使用list slice删除前两个字符
在左边的Adds ^{} 来生成总共64个字符的字符串
相关问题 更多 >
编程相关推荐