AttributeError:'模块'对象没有属性' xfeatures2d' [Python / OpenCV 2.4]

时间:2016-05-04 22:36:39

标签: python opencv

这一行:

Traceback (most recent call last):
  File "C:/Python27/openCVskrypty/GUI/SOLUTION2.py", line 11, in <module>
    sift = cv2.xfeatures2d.SIFT_create()
AttributeError: 'module' object has no attribute 'xfeatures2d'

返回错误:

{{1}}

我读过有关此错误的内容,它出现在OpenCV 3.0版中。 这很奇怪,因为我有2.4.11版本。

我检查了dir(cv2),我还没有得到xfeatures2d模块。有谁知道为什么?我可以单独下载吗?

感谢您帮忙解决此问题。

12 个答案:

答案 0 :(得分:16)

我认为你应该安装opencv-contrib-python。你正在使用的模块不支持opencv-python。见opencv-contrib-python

安装:

Data, CompressionInfo, Index

答案 1 :(得分:13)

SIFT是获得专利的算法,因此在每个open-cv版本中均不可用。您可以做的是同时安装opencv及其贡献部分,即

pip install opencv-python==3.3.0.10 opencv-contrib-python==3.3.0.10

SIFT在上述版本的opencv上对我来说效果很好。

答案 2 :(得分:5)

对于 CV2 版本 4.5.1,这有效

sift = cv2.SIFT_create()
kp = sift.detect(gimg,None)
img=cv2.drawKeypoints(gimg,kp,img)
plt.imshow(img)

答案 3 :(得分:2)

问题在于您的OpenCV版本。你说你使用的是版本2.4.11,但是这个版本的OpenCV没有这个方法。

您可以查看documentation。它有features2d

而OpenCV 3.0确实如此。

答案 4 :(得分:1)

您可以改用:

sift=cv2.SIFT()

答案 5 :(得分:1)

执行命令后:

pip install opencv-contrib-python

,出现以下错误:

  

错误:OpenCV(4.0.0)   /Users/rene/build/skvark/opencv-python/opencv_contrib/modules/xfeatures2d/src/sift.cpp:1207:   错误:(-213:未实现功能/功能)此算法   已获专利,并且不包含在此配置中;组   OPENCV_ENABLE_NONFREE CMake选项并在函数中重建库   '创建'

可以在anaconda中使用以下命令解决该问题:

conda install -c menpo opencv

或带有点子:

pip install opencv-python==3.4.2.16

pip install opencv-contrib-python==3.4.2.16

答案 6 :(得分:0)

由于OpenCV和OpenCV-Contrib软件包版本不匹配,在OpenCV 3+中也可能发生此错误。

我有OpenCV版本3.4.1和OpenCV-Contrib版本3.4.0。我用OpenCV-Contrib尝试了以下方法:

卸载OpenCV-Contrib软件包:

$ pip uninstall opencv-contrib-python

然后再次安装相同的内容:

$ pip install opencv-contrib-python

该pip自动获取并安装最新的兼容版本。

答案 7 :(得分:0)

我曾经遇到过类似的问题,如@srihegde所说,您可以尝试卸载 opencv-contrib-python 软件包并重新安装。您也可以尝试卸载 opencv-python 软件包,因为它也可能会与软件包混淆。

这对我有帮助。

卸载:

pip3 uninstall opencv-contrib-python
pip3 uninstall opencv-python

然后安装:

pip3 install opencv-contrib-python
pip3 install opencv-python

答案 8 :(得分:0)

我遇到了同样的错误...我曾经使用cv2.__version__cv2.__path__检查opencv版本和路径。然后,我从 site-packages 中删除了 cv2 。并安装以下内容

pip install opencv-python==3.4.2.17

pip install opencv-contrib-python==3.4.2.17

答案 9 :(得分:0)

我收到此错误,我所做的就是卸载opencv软件包并按以下顺序安装它们。

STEPS

通过 Anaconda Prompt 打开 running as administrator ,然后键入以下命令。

$ pip uninstall opencv-python

$ pip uninstall opencv-contrib-python

然后键入以下命令

$ pip install opencv-contrib-python==3.4.2.16

$ pip install opencv-python==3.4.2.16

这解决了我的问题。希望这能解决您的问题!!??

答案 10 :(得分:0)

由于美国专利问题,它不适用于OpenCV 4.0。也许我们会对OpenSift的努力大加赞赏:

https://github.com/robwhess/opensift

答案 11 :(得分:0)

打开 Powershell 提示符并键入以下命令:

pip install --user opencv-contrib-python

帮我修好了。

如果您使用的是 Jupyter Notebook,请打开 Ananconda Powershell Prompt。