所以我正在尝试使用:
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 但我仍然遇到同样的错误。在此先感谢您,如果我没有包含足够的信息,我深表歉意
我有同样的问题。似乎 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 所需的一切
自 SIFT 专利到期后,SIFT 已移至主仓库。 要在 Opencv 中使用 SIFT,您现在应该使用 cv2.SIFT_create() 而不是 cv2.xfeatures2d.SIFT_create()。 (xfeatures2d 只存在于 contrib 包中,但 sift 现在是主包的一部分。)
编辑:
opencv-contrib-python-nonfree
已从 pypi 中删除。
在 Linux/ MacOS 上,我找到了更好的解决方案!要访问非自由检测器,请使用:
pip install opencv-contrib-python-nonfree
可能是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)
python版本是不是最新的可以试试
pip 安装 opencv-contrib-python==4.4.0.46
这个问题我已经研究了好几个小时,终于解决了,我将与您(以及其他任何人)分享解决方法。
步骤如下:
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) 应用程序并转到我们创建的“build”目录。
找到“OpenCV.sln”并使用 Visual Studio 运行它。
将构建模式从“调试”更改为“发布”。
在右侧的“解决方案资源管理器”菜单中,找到“CMakeTargets”>>“ALL_BUILD”,右键单击它并选择“构建”
等待构建(可能需要 5 分钟以上)
再次,在右侧的“解决方案资源管理器”菜单中,找到“CMakeTargets”>>“安装”,右键单击它并选择“构建”
额外:
pip uninstall opencv-python
pip uninstall opencv-contrib-python
重新启动您的设备。
测试 OpenCV。打开终端并输入
$ python
>>> import cv2
>>> cv2.__version__
希望这有帮助,谢谢!