云计算期末大作业 论文图像复用的机器自动检查 魏如蓝 10172100262
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

40 řádky
874 B

před 3 roky
  1. # 正则化图像
  2. def regularizeImage(img, size = (8, 8)):
  3. return img.resize(size).convert('L')
  4. # 计算hash值
  5. def getHashCode(img, size = (8, 8)):
  6. pixel = []
  7. for i in range(size[0]):
  8. for j in range(size[1]):
  9. pixel.append(img.getpixel((i, j)))
  10. mean = sum(pixel) / len(pixel)
  11. result = []
  12. for i in pixel:
  13. if i > mean:
  14. result.append(1)
  15. else:
  16. result.append(0)
  17. return result
  18. # 比较hash值
  19. def compHashCode(hc1, hc2):
  20. cnt = 0
  21. for i, j in zip(hc1, hc2):
  22. if i == j:
  23. cnt += 1
  24. return cnt
  25. # 计算平均哈希算法相似度
  26. def calaHashSimilarity(img1, img2):
  27. img1 = regularizeImage(img1)
  28. img2 = regularizeImage(img2)
  29. hc1 = getHashCode(img1)
  30. hc2 = getHashCode(img2)
  31. return compHashCode(hc1, hc2)
  32. __all__ = ['calaHashSimilarity']