云计算期末大作业 论文图像复用的机器自动检查 魏如蓝 10172100262
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
2.8 KiB

3 years ago
  1. from PIL import Image
  2. from multiprocessing import Process
  3. import sim.histogram as htg
  4. import sim.aHash as ah
  5. import sim.pHash as ph
  6. import sim.dHash as dh
  7. import os
  8. import feature
  9. from flask import redirect,url_for
  10. # if __name__ == '__main__':
  11. class simi:
  12. def similarity(self, path):
  13. print("begin")
  14. # print(m)
  15. # print(path)
  16. folder_path = "upload/" + path
  17. dirs = os.listdir(folder_path)
  18. # 文件夹下有tmp张图片
  19. tmp = 0
  20. for item in dirs:
  21. if os.path.isfile(os.path.join(folder_path, item)):
  22. tmp += 1
  23. # print(tmp)
  24. list = [[] for j in range(int(tmp*(tmp-1)*0.5))] # [[], [], [], [], [], []]
  25. index = 0
  26. for i in range(1,tmp+1):
  27. for j in range(i+1,tmp+1):
  28. str1 = folder_path + '/img' + str(i) + '.png'
  29. str2 = folder_path + '/img' + str(j) + '.png'
  30. # print(str1)
  31. # print(index)
  32. # print('------------------')
  33. list[index].append(str1)
  34. list[index].append(str2)
  35. img1 = Image.open(str1)
  36. img2 = Image.open(str2)
  37. img1_htg = htg.regularizeImage(img1)
  38. img2_htg = htg.regularizeImage(img2)
  39. hg1 = img1_htg.histogram()
  40. hg2 = img2_htg.histogram()
  41. # draw the histogram in a no-blocking way
  42. sub_thread = Process(target=htg.drawHistogram, args=(hg1, hg2,))
  43. sub_thread.start()
  44. # print the histogram similarity
  45. htg_result = htg.calMultipleHistogramSimilarity(img1_htg, img2_htg)
  46. list[index].append(htg_result)
  47. print('依据图片直方图距离计算相似度:{}'.format(htg_result))
  48. # aHash Calculation
  49. ah_result = ah.calaHashSimilarity(img1, img2)
  50. list[index].append(ah_result)
  51. print('依据平均哈希算法计算相似度:{}/{}'.format(ah_result, 64))
  52. # pHash Calculation
  53. ph_result = ph.calpHashSimilarity(img1, img2)
  54. list[index].append(ph_result)
  55. print('依据感知哈希算法计算相似度:{}/{}'.format(ph_result, 64))
  56. # dHash Calculation
  57. dh_result = dh.caldHashSimilarity(img1, img2)
  58. list[index].append(dh_result)
  59. print('依据差异哈希算法计算相似度:{}/{}'.format(dh_result, 64))
  60. index = index + 1
  61. # print(list)
  62. # print(index)
  63. # print(tmp)
  64. the_feature = feature.feat()
  65. message = the_feature.call_feature_extraction_1(folder_path,list,index,tmp)
  66. # return redirect(url_for('call_feature',alist = list))
  67. return message