首页 > 解决方案 > 使用 FLANN 索引将图片与数据库匹配

问题描述

我想将一张图片与包含大约 1000 张图片的数据库进行匹配。我希望在接收到图像作为输入后,程序会返回数据库中最相似的图片。

import numpy as np
import cv2
import os

scanned = 'input.jpg'
orb = cv2.ORB_create()
FLANN_INDEX_LSH = 6
flann_params = dict(algorithm = FLANN_INDEX_LSH, table_number = 10, key_size = 20, multi_probe_level = 0)
search_params = dict(checks=50)
flann = cv2.FlannBasedMatcher(flann_params,search_params)

des_all = None
for filename in os.listdir('images'):
    img2 = cv2.imread('images/' + filename, 0)
    kp2, des2 = orb.detectAndCompute(img2,None)
    flann.add([des2])
    
print ("Training...")
flann.train()                    

img1 = cv2.imread(scanned, 0)
kp1, des1 = orb.detectAndCompute(img1,None)
print ("Matching...")
matches = flann.knnMatch(des1,k=2)

在那之后,我必须做什么才能让我的哪些图像最匹配?如何使用匹配结果?我找不到任何有用的文档感谢您的帮助。

标签: pythonopencv

解决方案


推荐阅读