Я пытаюсь проверить два изображения на сходство с использованием SIFT.Результат должен быть в процентах.
Я понял, как извлечь функции и дескрипторы из изображений, используя OpenCV и его библиотеку.Если я вычислю расстояние между дескрипторами, я не получу процент.Я еще не отсортировал мою голову правильно, как рассчитать это.
Может кто-нибудь помочь мне правильно сложить недостающий кусок в моей голове?
alg = cv2.xfeatures2d.SIFT_create()
trainFiles = getPaths(dirTrain)
images = []
for file in trainFiles:
img = cv2.imread(file)
images.append(img)
np_images = np.array(images)
descriptors = np.zeros((1,128)) #Matrix to hold the descriptors
for i,img in enumerate(np_images):
kp, des = alg.detectAndCompute(img,None)
descriptors = np.concatenate((descriptors,des),axis=0)
print('Processed image {} of {}'.format(i,len(np_images)))
descriptors = descriptors[1:,:]
a = descriptors[0]
b = descriptors[1]
# euclidean distance
dist = np.linalg.norm(a-b)