|
|
- from PIL import Image
- from multiprocessing import Process
- import sim.histogram as htg
- import sim.aHash as ah
- import sim.pHash as ph
- import sim.dHash as dh
- import os
- import feature
- from flask import redirect,url_for
-
-
- # if __name__ == '__main__':
-
- class simi:
- def similarity(self, path):
- print("begin")
- # print(m)
- # print(path)
-
- folder_path = "upload/" + path
- dirs = os.listdir(folder_path)
-
- # 文件夹下有tmp张图片
- tmp = 0
- for item in dirs:
- if os.path.isfile(os.path.join(folder_path, item)):
- tmp += 1
- # print(tmp)
-
- list = [[] for j in range(int(tmp*(tmp-1)*0.5))] # [[], [], [], [], [], []]
-
- index = 0
- for i in range(1,tmp+1):
- for j in range(i+1,tmp+1):
- str1 = folder_path + '/img' + str(i) + '.png'
- str2 = folder_path + '/img' + str(j) + '.png'
- # print(str1)
- # print(index)
- # print('------------------')
- list[index].append(str1)
- list[index].append(str2)
-
- img1 = Image.open(str1)
- img2 = Image.open(str2)
- img1_htg = htg.regularizeImage(img1)
- img2_htg = htg.regularizeImage(img2)
- hg1 = img1_htg.histogram()
- hg2 = img2_htg.histogram()
-
- # draw the histogram in a no-blocking way
- sub_thread = Process(target=htg.drawHistogram, args=(hg1, hg2,))
- sub_thread.start()
-
- # print the histogram similarity
- htg_result = htg.calMultipleHistogramSimilarity(img1_htg, img2_htg)
- list[index].append(htg_result)
- print('依据图片直方图距离计算相似度:{}'.format(htg_result))
-
- # aHash Calculation
- ah_result = ah.calaHashSimilarity(img1, img2)
- list[index].append(ah_result)
- print('依据平均哈希算法计算相似度:{}/{}'.format(ah_result, 64))
-
- # pHash Calculation
- ph_result = ph.calpHashSimilarity(img1, img2)
- list[index].append(ph_result)
- print('依据感知哈希算法计算相似度:{}/{}'.format(ph_result, 64))
-
- # dHash Calculation
- dh_result = dh.caldHashSimilarity(img1, img2)
- list[index].append(dh_result)
- print('依据差异哈希算法计算相似度:{}/{}'.format(dh_result, 64))
-
- index = index + 1
- # print(list)
- # print(index)
- # print(tmp)
-
- the_feature = feature.feat()
- message = the_feature.call_feature_extraction_1(folder_path,list,index,tmp)
-
- # return redirect(url_for('call_feature',alist = list))
- return message
-
-
-
-
-
-
|