OpenCV Python无法使用SIFT

时间:2017-01-06 20:56:14

标签: python opencv

我正在尝试像

这样简单的事情
sift = cv2.SIFT()

并得到这个错误的错误

赛道(最近一次呼叫最后一次):   文件" C:\图像处理\ featurematching2.py",第9行,in     sift = cv2.SIFT() AttributeError:'模块'对象没有属性' SIFT'

  
    
      

    
  

我不明白,因为安装了cv2。

cv2.version是  ' 3.1.0'

我的系统是windows8.1 64bit 我的python程序2.7.12和opencv 3.1.0

也许某人有同样的问题可以帮助我

非常感谢

1 个答案:

答案 0 :(得分:2)

在OpenCV 3中,已经进行了更严格的分离,以区分专有和非专有功能(也是免版税而非免费)。 SIFT和SURF都是专有算法(而不是免版税),因此不会与OpenCV 3的默认安装(您在发行版的存储库中找到的那个)一起分发,除非它在分发专有内容时没有问题。 / p>

要访问此类专有功能,您需要通过编译 contrib 模块从源代码构建它们。我从来没有偶然发现这个问题因为我总是从源代码构建OpenCV(至少从3.0版本开始)所以我总是选择我认为我将使用哪些功能并相应地构建它们。

详细说明herecontrib模块就是您所需要的。我个人建议至少编译一次OpenCV,这样你就可以更好地了解它的位置。

请注意以下内容 - 如上所述,SIFT是专有的,而非免版税。有关详细信息,请参阅this discussion。基本上如果你在家里或在学校做有趣的项目,你很高兴。但是,当您开始将这些作为公司项目的一部分或通常用于商业用途时,您必须兑现。

最后但同样重要的是,opencv_contrib模块还包含不够稳定且无法包含在主程序包中的功能。