我在找人帮忙。我计算了欧几里得距离,并进行了排序。现在我得把欧几里德距离最小的图像取回来!我不知道该怎么做。
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值,而对于查询图像,实验将返回相同的值。
谢谢!
发布于 2014-03-08 09:30:48
在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 distanceshttps://stackoverflow.com/questions/22267467
复制相似问题