def obtainSimilarityScore(img1,img2):
detector = cv2.FeatureDetector_create("SIFT")
descriptor = cv2.DescriptorExtractor_create("SIFT")
skp = detector.detect(img1)
skp, sd = descriptor.compute(img1, skp)
tkp = detector.detect(img2)
tkp, td = descriptor.compute(img2, tkp)
num1 = 0
for i in range(len(sd)):
kp_value_min = np.inf
kp_value_2min = np.inf
for j in range(len(td)):
kp_value = 0
for k in range(128):
kp_value = (sd[i][k]-td[j][k]) *(sd[i][k]-td[j][k]) + kp_value
if kp_value < kp_value_min:
kp_value_2min = kp_value_min
kp_value_min = kp_value
if kp_value_min < 0.8*kp_value_2min:
num1 = num1+1
num2 = 0
for i in range(len(td)):
kp_value_min = np.inf
kp_value_2min = np.inf
for j in range(len(sd)):
kp_value = 0
for k in range(128):
kp_value = (td[i][k]-sd[j][k]) *(td[i][k]-sd[j][k]) + kp_value
if kp_value < kp_value_min:
kp_value_2min = kp_value_min
kp_value_min = kp_value
if kp_value_min < 0.8*kp_value_2min:
num2 = num2+1
K1 = num1*1.0/len(skp)
K2 = num2*1.0/len(tkp)
SimilarityScore = 100*(K1+K2)*1.0/2
return SimilarityScore
facegroup.py 文件源码
python
阅读 19
收藏 0
点赞 0
评论 0
评论列表
文章目录