OpenCV Python : No drawMatchesknn function

前端 未结 2 2056
挽巷
挽巷 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-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)
    

提交回复
热议问题