AttributeError:“模块”对象没有属性“xfeatures2d”[Python/OpenCV 2.4]
Posted
技术标签:
【中文标题】AttributeError:“模块”对象没有属性“xfeatures2d”[Python/OpenCV 2.4]【英文标题】:AttributeError: 'module' object has no attribute 'xfeatures2d' [Python/OpenCV 2.4] 【发布时间】:2016-08-30 13:40:50 【问题描述】:这一行:
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 模块。有谁知道为什么?可以单独下载吗?
感谢您帮助解决此问题。
【问题讨论】:
【参考方案1】:在最新的 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)
【讨论】:
仅代码答案不被视为良好做法。请考虑Explaining how this answers the question【参考方案2】:对于 CV2 版本 4.5.1,此方法有效
sift = cv2.SIFT_create()
kp = sift.detect(gimg,None)
img=cv2.drawKeypoints(gimg,kp,img)
plt.imshow(img)
【讨论】:
github.com/HeatherJiaZG/SuperGlue-pytorch/issues/13 对我来说也适用于 opencv-python==4.5.3.56 和 opencv-contrib-python==4.5.3.56 @Usama gimg 是什么? @SyedHussain 这是灰色图像。【参考方案3】:打开 Powershell 提示并键入以下命令:
pip install --user opencv-contrib-python
帮我修好了。
如果您使用的是 Jupyter Notebook,请打开 Ananconda Powershell 提示。
【讨论】:
【参考方案4】:执行命令后:
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:
pip install opencv-python==3.4.2.17
pip install opencv-contrib-python==3.4.2.17
【讨论】:
找不到匹配的分布 应该是pip install opencv-python==3.4.2.17
和pip install opencv-contrib-python==3.4.2.17
如果您想使用 SIFT 或 SURF,请安装 3.4.2.16。 (已测试)***.com/questions/52305578/…【参考方案5】:
由于美国专利问题,它不适用于 OpenCV 4.0。也许我们应该为 OpenSift 的努力点赞:
https://github.com/robwhess/opensift
【讨论】:
【参考方案6】:我收到此错误,我所做的只是卸载 opencv 包并按以下顺序安装它们。
步骤
通过running as administrator
打开Anaconda Prompt
并输入以下命令。
$ 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
这解决了我的问题。希望这能解决你的问题。!!??
【讨论】:
【参考方案7】:我遇到了同样的错误...我使用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
【讨论】:
这是最新版本的安装顺序。 找不到匹配的分布 您必须将 open cv 的发行版本修改为最新版本。目前它的 4.1.2.30。【参考方案8】:我曾经遇到过与@srihegde 说的类似的问题,您可以尝试卸载 opencv-contrib-python 软件包并重新安装。你也可以尝试卸载 opencv-python 包,如果你有的话,因为它也可能会弄乱包。
这对我有帮助。
卸载:
pip3 uninstall opencv-contrib-python
pip3 uninstall opencv-python
然后安装:
pip3 install opencv-contrib-python
pip3 install opencv-python
【讨论】:
我只需要安装部分:【参考方案9】:SIFT 是一种专利算法,因此并非在每个 open-cv 版本中都可用。您可以做的是同时安装opencv及其contrib部分,即
pip install opencv-python==3.3.0.10 opencv-contrib-python==3.3.0.10
SIFT 在以上版本的 opencv 上对我来说效果很好。
【讨论】:
您甚至可以升级到3.4.2.17
并仍然使用 SIFT。
至少对我来说,cv2.xfeatures2d.SIFT_create() 只适用于 3.3.0.10
错误:没有为 opencv-python==3.3.0.10 找到匹配的分布
版本 3.3.0.10 现在不可用,下一个版本是 3.4.2.16 并且能够与 sift=cv2.xfeatures2d.SIFT_create()
一起使用。我还必须做 pip3 install opencv-python sudo apt-get install libatlas-base-dev sudo apt-get install libjasper-dev sudo apt-get install libqtgui4 sudo apt-get install python3-pyqt5 sudo apt install libqt4-test跨度>
仅通过使用cv2.SIFT_create()
即可在较新的版本中使用。我正在使用 opencv 4.5.4 rn【参考方案10】:
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 会自动获取并安装最新的兼容版本。
【讨论】:
【参考方案11】:我认为你应该安装 opencv-contrib-python。您正在使用的模块在 opencv-python 中不受支持。见opencv-contrib-python。
安装:
pip install opencv-contrib-python
【讨论】:
对于那些使用 OpenCV 3+ 并看到 AttributeError: 'module' object has no attribute 'xfeatures2d' 的人来说,这可能是正确的解决方案 你有没有试过先卸载之前的OpenCV?【参考方案12】:您可以改用这个:
sift=cv2.SIFT()
【讨论】:
【参考方案13】:问题在于您的 OpenCV 版本。您说您使用的是 2.4.11 版本,但此版本的 OpenCV 没有此方法可用。
您可以查看documentation。它有features2d
而 OpenCV 3.0 可以。
【讨论】:
感谢您的回答。是否必须下载v.3.0 OpenCV,可以单独下载这个模块吗?以上是关于AttributeError:“模块”对象没有属性“xfeatures2d”[Python/OpenCV 2.4]的主要内容,如果未能解决你的问题,请参考以下文章
AttributeError:“模块”对象没有属性“百分位”
无法安装模块 - AttributeError: 'NoneType' 对象没有属性 'loader'