Note that there are some explanatory texts on larger screens.

plurals
  1. POCompare similarity of images using OpenCV with Python
    primarykey
    data
    text
    <p>I'm trying to compare a image to a list of other images and return a selection of images (like Google search images) of this list with up to 70% of similarity.</p> <p>I get this code in <a href="https://stackoverflow.com/questions/10984313/opencv-2-4-1-computing-surf-descriptors-in-python/10987035#10987035">this post</a> and change for my context</p> <pre><code># Load the images img =cv2.imread(MEDIA_ROOT + "/uploads/imagerecognize/armchair.jpg") # Convert them to grayscale imgg =cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # SURF extraction surf = cv2.FeatureDetector_create("SURF") surfDescriptorExtractor = cv2.DescriptorExtractor_create("SURF") kp = surf.detect(imgg) kp, descritors = surfDescriptorExtractor.compute(imgg,kp) # Setting up samples and responses for kNN samples = np.array(descritors) responses = np.arange(len(kp),dtype = np.float32) # kNN training knn = cv2.KNearest() knn.train(samples,responses) modelImages = [MEDIA_ROOT + "/uploads/imagerecognize/1.jpg", MEDIA_ROOT + "/uploads/imagerecognize/2.jpg", MEDIA_ROOT + "/uploads/imagerecognize/3.jpg"] for modelImage in modelImages: # Now loading a template image and searching for similar keypoints template = cv2.imread(modelImage) templateg= cv2.cvtColor(template,cv2.COLOR_BGR2GRAY) keys = surf.detect(templateg) keys,desc = surfDescriptorExtractor.compute(templateg, keys) for h,des in enumerate(desc): des = np.array(des,np.float32).reshape((1,128)) retval, results, neigh_resp, dists = knn.find_nearest(des,1) res,dist = int(results[0][0]),dists[0][0] if dist&lt;0.1: # draw matched keypoints in red color color = (0,0,255) else: # draw unmatched in blue color #print dist color = (255,0,0) #Draw matched key points on original image x,y = kp[res].pt center = (int(x),int(y)) cv2.circle(img,center,2,color,-1) #Draw matched key points on template image x,y = keys[h].pt center = (int(x),int(y)) cv2.circle(template,center,2,color,-1) cv2.imshow('img',img) cv2.imshow('tm',template) cv2.waitKey(0) cv2.destroyAllWindows() </code></pre> <p>My question is, how can I compare the image with the list of images and get only the similar images? Is there any method to do this?</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload