OpenCV Python : No drawMatchesknn function

前端 未结 2 2049
挽巷
挽巷 2020-12-17 23:30

When I tried to use drawMatchesKnn function as mentioned in this tutorial for FLANN feature matching, I get the following error

AttributeError: \'modu

相关标签:
2条回答
  • 2020-12-17 23:56

    You need to use OpenCV version 3. drawMatchesKnn() is present in 3.0.0-alpha but not in 2.4.11

    That error is there, because you are using an old version of OpenCV.

    0 讨论(0)
  • 2020-12-18 00:19

    The functions cv2.drawMatches and cv2.drawMatchesKnn are not available in newer versions of OpenCV 2.4. @rayryeng provided a lightweight alternative which works as is for the output of DescriptorMatcher.match. The difference with DescriptorMatcher.knnMatch is that the matches are returned as a list of lists. To use the @rayryeng alternative, the matches must be extracted into a 1-D list.

    For example, the Brute-Force Matching with SIFT Descriptors and Ratio Test tutorial could be amended as such:

    # BFMatcher with default params
    bf = cv2.BFMatcher()
    matches = bf.knnMatch(des1,des2, k=2)
    
    # Apply ratio test
    good = []
    for m,n in matches:
        if m.distance < 0.75*n.distance:
           # Removed the brackets around m 
           good.append(m)
    
    # Invoke @rayryeng's drawMatches alternative, note it requires grayscale images
    gray1 = cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY)
    gray2 = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
    drawMatches(gray1,kp1,gray2,kp2,good)
    
    0 讨论(0)
提交回复
热议问题