python - OpenCV 'SIFT' 属性错误

标签 python opencv sift

我写了这个函数来比较视频帧的关键点。

def match_images(img1, img2):
    """Given two images, returns the matches"""
       detector = cv2.SIFT(100)
       matcher = cv2.BFMatcher(cv2.NORM_L2)

       kp1, desc1 = detector.detectAndCompute(img1, None)
       kp2, desc2 = detector.detectAndCompute(img2, None)

       raw_matches = matcher.knnMatch(desc1, trainDescriptors = desc2, k = 2) 
       kp_pairs = filter_matches(kp1, kp2, raw_matches)
       return kp_pairs

我得到了这个错误
Traceback (most recent call last):
  File "test.py", line 173, in <module>
    kp_pairs = match_images(img1, img2)
  File "test.py", line 18, in match_images
    detector = cv2.SIFT(100)
   AttributeError: 'module' object has no attribute 'SIFT'

最佳答案

因此,现在您已经使用 opencv_contrib 包安装了 OpenCV 3,您应该可以从 OpenCV 2.4.X 访问原始的 SIFT 和 SURF 实现,只是这次它们将通过 cv2.SIFT_create 和 cv2 在 xfeatures2d 子模块中.SURF_create 函数。

python3
>>> import cv2
>>> image = cv2.imread("test_image.jpg")
>>> gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
>>> sift = cv2.xfeatures2d.SIFT_create()
>>> ...

关于python - OpenCV 'SIFT' 属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22575682/

相关文章:

python - 如何使用opencv拼接多张图像?

解释器中的python多处理池断言错误

python - 提前停止的 tf keras autokeras 返回空历史记录

delphi - 当我尝试安装 Delphi-OpenCV。我得到 "%1 is not a valid Win32 application. "

python - 无法在 OpenCV(Python)中打开视频

visual-studio - 尝试使用Visual Studio编译OpenCv文件时出现链接器错误

c++ - OpenCV 上的简单 SIFT 检测器问题

opencv - 获取Matrix来训练sift特征的问题

python - 在 Python 中选择多播网络接口(interface)

python - 在 numpy 数组中找到第 k 个最小的元素