模块'cv2.cv2'没有属性'sift'

时间:2018-09-13 17:34:35

标签: python-3.x opencv sift

当我尝试:

sift = cv2.sift()

最后我得到以下内容:

AttributeError: module 'cv2.cv2' has no attribute 'sift'

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

1 个答案:

答案 0 :(得分:1)

简短答案:

如果有人在运行时遇到错误

sift = cv2.SIFT_create()

确保您拥有

  1. 安装了opencv的额外模块:opencv-contrib (GitHub Repo)
  2. 代替上面的代码,运行以下命令:
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上方的评论中给了我答案,如简短答案所示。谢谢米卡!

P.S。该专利实际上已经到期,因此SIFT现在实际上是免费的,但是到目前为止,将SIFT移至主要模块is yet to be done的工作。