属性错误:“模块”对象没有属性“xfeatures2d”[Python/OpenCV 2.4]

问题描述 投票:0回答:14

这一行:

sift = cv2.xfeatures2d.SIFT_create()

返回错误:

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'

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

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

感谢您帮助解决此问题。

python opencv
14个回答
66
投票

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

安装:

pip install opencv-contrib-python

34
投票

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

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

SIFT 在以上版本的 opencv 上对我来说工作得很好。


23
投票

对于 CV2 版本 4.5.1,这有效

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

14
投票

执行命令后:

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.17

pip install opencv-contrib-python==3.4.2.17

5
投票

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

步骤

通过

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

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


4
投票

在最新的 CV2 版本 4.5.3.56 中,此功能有效:

img1 = cv2.imread(r'C:\Users\CW\Desktop\new_img.png') 
sift = cv2.SIFT_create() 
kp1, des1 = sift.detectAndCompute(img1, None)

4
投票

使用

sift = cv2.SIFT_create()
代替
cv2.xfeatures2d.SIFT_create()
,因为sift专利现已过期,因此OpenCV已将
SIFT_create()
直接移至主存储库,而不是版本> 4.4中的contrib模块,参见此


3
投票

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

这对我有帮助。

卸载:

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

然后安装:

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

3
投票

我遇到了同样的错误...我已经使用

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

2
投票

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

您可以查看文档。它有 features2d

而 OpenCV 3.0 则如此。


1
投票

此错误也可能发生在 OpenCV 3+ 中,因为它是由 OpenCV 和 OpenCV-Contrib 包版本不匹配引起的。

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

卸载 OpenCV-Contrib 包:

$ pip uninstall opencv-contrib-python

然后再次安装相同的:

$ pip install opencv-contrib-python

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


0
投票

由于美国专利问题,它不适用于 OpenCV 4.0。也许我们应该为 OpenSift 的努力点赞:

https://github.com/robwhess/opensift


0
投票

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

pip install --user opencv-contrib-python

帮我修好了。

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


0
投票

pip 安装 opencv-contrib-python==4.5.1.48

正在win10上工作

© www.soinside.com 2019 - 2024. All rights reserved.