从其值(欧氏距离)在Python OpenCV中检索图像

2 投票
1 回答
1028 浏览
提问于 2025-04-17 21:24

我需要一点帮助。我已经计算了欧几里得距离并进行了排序。现在我需要找出那些距离最小的图像!但我不知道该怎么做。

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

撰写回答