Quantcast
Channel: OpenCV Q&A Forum - RSS feed
Viewing all articles
Browse latest Browse all 2088

Find image from a database of images

$
0
0
Hello everyone, I'm moving my first steps with OpenCV in Python. What I'd wish to do is given an image, find its "original" one from a collection of reference images. Just to be clear, the query image is a simple photo of the whole image (card), so it's not the scenario "find an object inside a photo", but "just" a similarity test. My final database will be pretty large (about 25 000 images), but I started doing some tests on a smaller scale (only 270 images). Recognition works perfectly, however it's pretty slow: it takes 8 seconds to iterate over all 270 images. I was able to speed up the job by saving the descriptors to disk and load them, instead of calculating them; anyway it's still slow. So I started to work on FLANN: I get some results, but my main problem is to find the matching images. I get a whole array of points, but I don't know how to fetch the right image. This is my code: scanned = 'tests/temp_bw.png' surf = cv2.xfeatures2d.SURF_create(400) surf.setUpright(True) img1 = cv2.imread(scanned, 0) kp1, des1 = surf.detectAndCompute(img1, None) FLANN_INDEX_KDTREE = 1 index_params = dict(algorithm=FLANN_INDEX_KDTREE, trees=5) des_all = None for filename in os.listdir('images'): img2 = cv2.imread('images/' + filename, 0) kp2, des2 = surf.detectAndCompute(img2, None) if des_all is None: des_all = des2 else: des_all = np.concatenate((des_all, des2)) flann = cv2.flann.Index() print "Training..." flann.build(des_all, index_params) print "Matching..." indexes, matches = flann.knnSearch(des1, 10) # and now??? Any suggestions on how I can reference back the most similar image?

Viewing all articles
Browse latest Browse all 2088

Trending Articles