From e48682a9f7cba8767d8fea69213f44ca5b0726df Mon Sep 17 00:00:00 2001 From: atinfinity Date: Sun, 13 Jan 2019 18:34:05 +0900 Subject: [PATCH] Merge pull request #13616 from atinfinity:fixed-py_matcher-tutorial * fixed tutorial code of py_matcher * fixed imread mode --- .../py_matcher/py_matcher.markdown | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/doc/py_tutorials/py_feature2d/py_matcher/py_matcher.markdown b/doc/py_tutorials/py_feature2d/py_matcher/py_matcher.markdown index 8ab4c53908..ca7853d96a 100644 --- a/doc/py_tutorials/py_feature2d/py_matcher/py_matcher.markdown +++ b/doc/py_tutorials/py_feature2d/py_matcher/py_matcher.markdown @@ -53,8 +53,8 @@ import numpy as np import cv2 as cv import matplotlib.pyplot as plt -img1 = cv.imread('box.png',0) # queryImage -img2 = cv.imread('box_in_scene.png',0) # trainImage +img1 = cv.imread('box.png',cv.IMREAD_GRAYSCALE) # queryImage +img2 = cv.imread('box_in_scene.png',cv.IMREAD_GRAYSCALE) # trainImage # Initiate ORB detector orb = cv.ORB_create() @@ -79,7 +79,7 @@ matches = bf.match(des1,des2) matches = sorted(matches, key = lambda x:x.distance) # Draw first 10 matches. -img3 = cv.drawMatches(img1,kp1,img2,kp2,matches[:10], flags=2) +img3 = cv.drawMatches(img1,kp1,img2,kp2,matches[:10],None,flags=cv.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS) plt.imshow(img3),plt.show() @endcode @@ -104,13 +104,13 @@ so that we can apply ratio test explained by D.Lowe in his paper. @code{.py} import numpy as np import cv2 as cv -from matplotlib import pyplot as plt +import matplotlib.pyplot as plt -img1 = cv.imread('box.png',0) # queryImage -img2 = cv.imread('box_in_scene.png',0) # trainImage +img1 = cv.imread('box.png',cv.IMREAD_GRAYSCALE) # queryImage +img2 = cv.imread('box_in_scene.png',cv.IMREAD_GRAYSCALE) # trainImage # Initiate SIFT detector -sift = cv.SIFT() +sift = cv.xfeatures2d.SIFT_create() # find the keypoints and descriptors with SIFT kp1, des1 = sift.detectAndCompute(img1,None) @@ -118,7 +118,7 @@ kp2, des2 = sift.detectAndCompute(img2,None) # BFMatcher with default params bf = cv.BFMatcher() -matches = bf.knnMatch(des1,des2, k=2) +matches = bf.knnMatch(des1,des2,k=2) # Apply ratio test good = [] @@ -127,7 +127,7 @@ for m,n in matches: good.append([m]) # cv.drawMatchesKnn expects list of lists as matches. -img3 = cv.drawMatchesKnn(img1,kp1,img2,kp2,good,flags=2) +img3 = cv.drawMatchesKnn(img1,kp1,img2,kp2,good,None,flags=cv.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS) plt.imshow(img3),plt.show() @endcode @@ -168,13 +168,13 @@ With this information, we are good to go. @code{.py} import numpy as np import cv2 as cv -from matplotlib import pyplot as plt +import matplotlib.pyplot as plt -img1 = cv.imread('box.png',0) # queryImage -img2 = cv.imread('box_in_scene.png',0) # trainImage +img1 = cv.imread('box.png',cv.IMREAD_GRAYSCALE) # queryImage +img2 = cv.imread('box_in_scene.png',cv.IMREAD_GRAYSCALE) # trainImage # Initiate SIFT detector -sift = cv.SIFT() +sift = cv.xfeatures2d.SIFT_create() # find the keypoints and descriptors with SIFT kp1, des1 = sift.detectAndCompute(img1,None) @@ -190,7 +190,7 @@ flann = cv.FlannBasedMatcher(index_params,search_params) matches = flann.knnMatch(des1,des2,k=2) # Need to draw only good matches, so create a mask -matchesMask = [[0,0] for i in xrange(len(matches))] +matchesMask = [[0,0] for i in range(len(matches))] # ratio test as per Lowe's paper for i,(m,n) in enumerate(matches): @@ -200,7 +200,7 @@ for i,(m,n) in enumerate(matches): draw_params = dict(matchColor = (0,255,0), singlePointColor = (255,0,0), matchesMask = matchesMask, - flags = 0) + flags = cv.DrawMatchesFlags_DEFAULT) img3 = cv.drawMatchesKnn(img1,kp1,img2,kp2,matches,None,**draw_params)