从其值(欧氏距离)在Python OpenCV中检索图像
我需要一点帮助。我已经计算了欧几里得距离并进行了排序。现在我需要找出那些距离最小的图像!但我不知道该怎么做。
import cv2
import CBIR as cb
import experiment as ex
from scipy.spatial import distance
result_list = list()
i = 0
a_list = list()
b_list = list()
a_list.append(ex.feature_matrix_ip)
while i < 50:
b_list.append(cb.feature_matrix_db[i])
dist = distance.euclidean(a_list,b_list[i])
result_list.append(dist)
i = i + 1
result_list.sort()
while i <50:
cv2.imshow('',result_list[i])
cv2.waitKey(0)
cv2.destroyAllWindows()
CBIR和实验是两个不同的模块,CBIR会返回bgr均值和glcm值,而实验则会返回查询图像的相同值。
谢谢!
1 个回答
0
在Python中,使用numpy来排序和获取距离较小的图像非常简单:
import numpy as np
image_ids = ['A','B','C','D'] #Identifiers for each image.
distances = np.array([0.01,0.2,0.3,0.001]) #Computed distances for each image in the image_ids array
ordered_indexes = np.argsort(distances)
for i,least_distance_id in enumerate(ordered_indexes):
print "Position:"+ str(i)+ " ID:"+image_ids[least_distance_id] + " Distance:"+str(distances[least_distance_id]) #Print the ids and distances