2013-11-24 4 views
6

、私はdrawMatchesKnn方法は、OpenCVの中に存在している私は他のリソースで確認OpenCVのPythonの:FLANNの特徴マッチングのために、この<a href="https://github.com/abidrahmank/OpenCV2-Python-Tutorials/blob/master/source/py_tutorials/py_feature2d/py_matcher/py_matcher.rst">tutorial</a>で述べたように、私はdrawMatchesKnn機能を使用しようとしたんdrawMatchesknn機能

AttributeError: 'module' object has no attribute 'drawMatchesKnn'

次のエラーを取得します。

なぜこのエラーが発生しますか?あなたがOpenCVのバージョン3. drawMatchesKnn()を使用する必要があり、事前

+0

OpenCVのバージョン:2.4.7 – rohangulati

+1

使用OpenCVのバージョン3.xのマスターブランチのソースからビルド –

+0

'IMP - このチュートリアルはOpenCV 3xバージョン用です。 OpenCV 2xではなく、READMEページにはっきりと記載されています。あなたはそれを読まなかったのですか? –

答えて

0

おかげであなたがOpenCVの古いバージョンを使っているので、それにエラーがある2.4.11

3.0.0-alpha中に存在するがありません。

3

OpenCV 2.4の新しいバージョンでは、機能cv2.drawMatchescv2.drawMatchesKnnは利用できません。 @rayryengはDescriptorMatcher.matchの出力としてそのまま働くlightweight alternativeを提供しました。 DescriptorMatcher.knnMatchとの違いは、一致がリストのリストとして返されることです。 @rayryengの代替方法を使用するには、マッチを1次元リストに抽出する必要があります。

例えば、Brute-Force Matching with SIFT Descriptors and Ratio Testチュートリアルのような改正することができます。

# 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) 
+1

このことをありがとうと言いたいのですが、これを元の投稿に追加して完成させました。 – rayryeng

関連する問題