Python3 AttributeError: module 'cv2' has no attribute 'SIFT'

1674 ワード

質問:python 3でsift=cv 2.SIFT()を使用してSIFTを行う場合、エラーが発生する可能性があります:AttributeError:module'cv 2'has no attribute'SIFT'
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.SIFT()
# find the keypoints and descriptors with SIFT
kp1, des1 = sift.detectAndCompute(img1, None)
kp2, des2 = sift.detectAndCompute(img2, None)

エラーメッセージ:AttributeError Traceback(most recentcall last)in()5 img 2=cv 2.imread('data/trainImage.jpg',0)#trainImage 6#Initiate SIFTdetector---> 7 sift=cv 2.SIFT()8#find the keyppoints and descriptors with SIFT 9 kp 1,des1=sift.detectAnCompute(img 1,None)AttributeError:module'cv 2'hahahav 2'har s no attribute'SIFT'
解決:sift=cv 2.SIFT()をsift=cv 2.xfeatures 2 d.SIFT_に置き換えます.create()
解析:opencvはSIFTなどのアルゴリズムをxfeatures 2 d集合に統合した.書き方:sift=cv 2.xfeatures 2 d.SIFT_create()
変更例:
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.SIFT()   sift = cv2.SIFT()   :sift = cv2.xfeatures2d.SIFT_create()
sift = cv2.xfeatures2d.SIFT_create()
# find the keypoints and descriptors with SIFT
kp1, des1 = sift.detectAndCompute(img1, None)
kp2, des2 = sift.detectAndCompute(img2, None)

説明:問題発生環境  Pythonバージョン:3.6.5  OpenCVバージョン:3.4.2
変換元:https://blog.csdn.net/yuxuan_08/article/details/87966840