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

Lip*_*ick 12 python opencv

这一行:

sift = cv2.xfeatures2d.SIFT_create()
Run Code Online (Sandbox Code Playgroud)

返回错误:

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'
Run Code Online (Sandbox Code Playgroud)

我读了一些关于这个错误的内容,它出现在OpenCV 3.0版中.这很奇怪,因为我有2.4.11版本.

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

感谢您帮忙解决这个问题.

小智 21

我认为你应该安装opencv-contrib-python.你正在使用的模块不支持opencv-python.请参阅opencv-contrib-python.

安装:

pip install opencv-contrib-python
Run Code Online (Sandbox Code Playgroud)


Sha*_*kla 16

SIFT是一种专利算法,因此在每个open-cv版本中都不可用.你可以做的是同时安装opencv及其贡献部分,即

pip install opencv-python==3.3.0.10 opencv-contrib-python==3.3.0.10
Run Code Online (Sandbox Code Playgroud)

在上面的opencv版本中,SIFT对我很好.

  • 您甚至可以升至“ 3.4.2.17”,仍然使用SIFT。 (3认同)
  • 只需使用“cv2.SIFT_create()”即可在新版本中使用。我正在使用 opencv 4.5.4 rn (2认同)

Ren*_* B. 12

执行命令后:

pip install opencv-contrib-python
Run Code Online (Sandbox Code Playgroud)

,我收到以下错误:

错误:OpenCV(4.0.0) /Users/rene/build/skvark/opencv-python/opencv_contrib/modules/xfeatures2d/src/sift.cpp:1207: error: (-213: The function/feature is not implementation) 这个算法已获得专利并被排除在此配置中;设置 OPENCV_ENABLE_NONFREE CMake 选项并在函数“create”中重建库

可以在 anaconda 中使用以下命令解决它:

conda install -c menpo opencv
Run Code Online (Sandbox Code Playgroud)

或者用点子:

pip install opencv-python==3.4.2.17

pip install opencv-contrib-python==3.4.2.17
Run Code Online (Sandbox Code Playgroud)

  • 未找到匹配的分布 (2认同)

小智 8

对于 CV2 版本 4.5.1,这有效

sift = cv2.SIFT_create()
kp = sift.detect(gimg,None)
img=cv2.drawKeypoints(gimg,kp,img)
plt.imshow(img)
Run Code Online (Sandbox Code Playgroud)


小智 5

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

脚步

打开Anaconda Promptrunning as administrator键入以下命令。

pip uninstall opencv-python

pip uninstall opencv-contrib-python
Run Code Online (Sandbox Code Playgroud)

然后输入以下命令

pip install opencv-contrib-python==3.4.2.16

pip install opencv-python==3.4.2.16
Run Code Online (Sandbox Code Playgroud)

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


Pyt*_*sta 2

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

你可以查看文档。它有features2d

而 OpenCV 3.0 则可以。