sift = cv2.xfeatures2d.SIFT_create() 即使安装了 contrib 也无法正常工作

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

所以我正在尝试使用:

sift = cv2.xfeatures2d.SIFT_create()

它出现了这个错误:

cv2.error: OpenCV(3.4.3) C:\projects\opencv-python\opencv_contrib\modules\xfeatures2d\src\sift.cpp:1207: error: (-213:The function/feature is not implemented) 
This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake 
option and rebuild the library in function 'cv::xfeatures2d::SIFT::create'

我正在使用

Python 3.5.0
opencv(3.4.3)
,我只是在闲置。这发生在我尝试安装 TensorFlow 之后,我尝试环顾四周并安装了 opencv-contrib-python 但我仍然遇到同样的错误。在此先感谢您,如果我没有包含足够的信息,我深表歉意

opencv python-3.5
6个回答
157
投票

我有同样的问题。似乎 SIRF 和 SURF 在 opencv > 3.4.2.16不再可用。我选择了较旧的 opencv-python 和 opencv-contrib-python 版本并解决了这个问题。这是关于opencv-python的历史版本,我使用以下代码:

pip install opencv-python==3.4.2.16
pip install opencv-contrib-python==3.4.2.16

编辑

对于 Anaconda 用户只是这个而不是 pip

conda install -c menpo opencv

这将安装 cv2 3.4.1 以及运行 SIFT 所需的一切


16
投票

自 SIFT 专利到期后,SIFT 已移至主仓库。 要在 Opencv 中使用 SIFT,您现在应该使用 cv2.SIFT_create() 而不是 cv2.xfeatures2d.SIFT_create()。 (xfeatures2d 只存在于 contrib 包中,但 sift 现在是主包的一部分。)

以下链接会有帮助。 https://github.com/opencv/opencv/issues/16736


13
投票

编辑:

opencv-contrib-python-nonfree
已从 pypi 中删除。

在 Linux/ MacOS 上,我找到了更好的解决方案!要访问非自由检测器,请使用:

pip install opencv-contrib-python-nonfree


7
投票

可能是opencv版本和opencv-contrib版本不匹配导致的。 如果您使用 CMake 从源安装 opencv,并且源版本与 opencv-contrib-python 的版本不同,请卸载当前的 opencv-contrib-python 并执行

pip install opencv-contrib-python==<version of the source>.X
或其他兼容版本。 我运行的一个版本设置是 opencv source (3.2)、opencv-python (3.4.0.14) 和 opencv-contrib-python (3.4.2.17)


0
投票

python版本是不是最新的可以试试

pip 安装 opencv-contrib-python==4.4.0.46


0
投票

这个问题我已经研究了好几个小时,终于解决了,我将与您(以及其他任何人)分享解决方法。

步骤如下:

1- 从官网下载CMAKE

2- 下载 Visual Studio

3- 下载 OpenCV Sources.zip 文件。

4- 从 github 下载 OpenCV-contrib


  • 首先,我们将创建一个目录并将其命名为“OpenCV”,该目录将包含“opencv-x.x.x”和“opencv_contrib-x.x.x”下载的提取文件。

  • 我们还将创建一个“构建”目录,其中将包含新的 OpenCV 构建文件。


  • 下一步是运行 CMake (cmake-gui) 应用程序。

  • 那你应该
    1. 在我们创建的“OpenCV”目录中找到“opencv-x.x.x”解压文件夹。
    2. 对'build'文件夹做同样的事情。

  • 完成后,点击“配置”


  • 应出现一个弹出窗口,选择合适的配置

  • 等待进度条完成。


  • 勾选OPENCV_ENABLE_NONFREE,然后再次点击'Configure',等待进度条出现。


  • 加载完成后,单击“配置”按钮旁边的“生成”。

  • 恭喜,你已经完成了第一步!


  • 好的,关闭 CMAKE (cmake-gui) 应用程序并转到我们创建的“build”目录。

  • 找到“OpenCV.sln”并使用 Visual Studio 运行它。

  • 将构建模式从“调试”更改为“发布”。

  • 在右侧的“解决方案资源管理器”菜单中,找到“CMakeTargets”>>“ALL_BUILD”,右键单击它并选择“构建”

  • 等待构建(可能需要 5 分钟以上)

  • 再次,在右侧的“解决方案资源管理器”菜单中,找到“CMakeTargets”>>“安装”,右键单击它并选择“构建”

  • 加载完成后,您就可以使用它了!

额外:

  • 您可以通过 pip 自由卸载“opencv-python”和“opencv-contrib-python”的任何预安装
    pip uninstall opencv-python
    pip uninstall opencv-contrib-python
  • 重新启动您的设备。

  • 测试 OpenCV。打开终端并输入

    $ python
    >>> import cv2
    >>> cv2.__version__

希望这有帮助,谢谢!

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