python-3.x - 模块 'cv2.cv2' 没有属性 'sift'

标签 python-3.x opencv sift

当我尝试:

sift = cv2.sift()

我最后得到以下信息:
AttributeError: module 'cv2.cv2' has no attribute 'sift'

我该如何解决?任何帮助,将不胜感激

最佳答案

简短回答:
如果有人在运行时出错

sift = cv2.SIFT_create()
确保你有
  • 安装了opencv的额外模块:opencv-contrib (GitHub Repo)
  • 运行以下代码,而不是上面的代码:
  • sift = cv2.xfeatures2d.SIFT_create()
    
    长答案:
    这可能不是这个特定问题的答案,但我决定把它写下来,以防万一有人像我一样觉得它有帮助。
    我正在通过 Introduction to SIFT (Scale-Invariant Feature Transform) 学习 SIFT ,并尝试代码
    sift = cv2.SIFT_create()
    
    这告诉了我以下
    AttributeError: module 'cv2.cv2' has no attribute 'SIFT_create'
    
    (编辑:the link above 中的默认文档版本是 4.4.0-pre。如果您将其切换到 4.3.0,文档会正确告诉您调用正确的方法。我想这意味着 SIFT 将在下一个4.4.0 版)
    然后我来到了这个问题,并在上​​面的评论中 the link from @Micka给了我答案,如简短答案所示。谢谢你米卡!
    附言专利实际上已经过期,所以 SIFT 现在实际上是免费的,但是将 SIFT 移动到主要模块的工作is yet to be done此刻。

    关于python-3.x - 模块 'cv2.cv2' 没有属性 'sift',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52318967/

    相关文章:

    match - opencv SIFT/SURF : how to determin whether the two images is matched or not?

    ios - opencv sift算法,如何从findHomography获得置信度

    python - 有没有更好的方法来获取字典列表中的字典值?

    java - OpenCV 消除扫描伪影并旋转内容

    python - 如何将 Julian 日期转换为标准日期?

    android - ANDROID OpenCV 中的模式识别算法 SURF、SIFT 出现异常

    c++ - 通过引用传递 cv::Mat 还是返回它?

    algorithm - SIFT算法能否在PC端实时快速提取特征?

    python-3.x - 使用 Jinja2 和 Sphinx 自动摘要

    python-3.x - Python 内置函数的时间复杂度?