Python3 TypeError:必須の引数 'outImg'(pos 6)が見つかりません



Python3 Typeerror Required Argumentoutimg Not Found



問題: python3でimg3 = cv2.drawMatchesKnn(img1、kp1、img2、kp2、good、flags = 2)を使用すると、エラーが発生する場合があります。TypeError:必須の引数 'outImg'(pos 6)が見つかりません

import numpy as np import cv2 from matplotlib import pyplot as plt img1 = cv2.imread('data/queryImage.jpg', 0) # queryImage img2 = cv2.imread('data/trainImage.jpg', 0) # trainImage # Initiate SIFT detector sift = cv2.xfeatures2d.SIFT_create() # find the keypoints and descriptors with SIFT kp1, des1 = sift.detectAndCompute(img1,None) kp2, des2 = sift.detectAndCompute(img2,None) # 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: good.append([m]) # cv2.drawMatchesKnn expects list of lists as matches. img3 = cv2.drawMatchesKnn(img1,kp1,img2,kp2,good,flags=2) ....

エラーメッセージ:



--------------------------------------------------------------------------- TypeError Traceback (most recent call last) in () 18 good.append([m]) 19 # cv2.drawMatchesKnn expects list of lists as matches. ---> 20 img3 = cv2.drawMatchesKnn(img1,kp1,img2,kp2,good,flags=2) 21 plt.imshow(img3),plt.show() TypeError: Required argument 'outImg' (pos 6) not found

解決する: img3 = cv2.drawMatchesKnn(img1、kp1、img2、kp2、good、flags = 2)を次のように置き換えます。

Img3 = cv2.drawMatchesKnn(img1、kp1、img2、kp2、good、None、flags = 2)つまり、outImgパラメーターがない場合は、Noneを渡します。



分析:

最後のデモでは、outImgパラメーターはNoneとして渡されます。

import cv2 cv2.drawMatchesKnn? ------------------------------------------------------------------------------------------------------ Docstring: drawMatchesKnn(img1, keypoints1, img2, keypoints2, matches1to2, outImg[, matchColor[, singlePointColor[, matchesMask[, flags]]]]) -> outImg . @overload Type: builtin_function_or_method demo: draw_params = dict(matchColor = (0,255,0), singlePointColor = (255,0,0), matchesMask = matchesMask, flags = 0) img3 = cv2.drawMatchesKnn(img1,kp1,img2,kp2,matches,None,**draw_params)


python3では、outImgパラメーターがない場合は、Noneを渡しても問題ありません。



変更例:

img3 = cv2.drawMatchesKnn(img1,kp1,img2,kp2,good,None,flags=2)

記事を参照できます: https://www.e-learn.cn/content/wangluowenzhang/309127

説明:問題が発生する環境
Pythonバージョン:3.6.5
OpenCVバージョン:3.4.2