gpt4 book ai didi

python - 无法在 MacO 上使用 opencv 运行 Sift

转载 作者:行者123 更新时间:2023-12-02 16:16:15 25 4
gpt4 key购买 nike

当我尝试运行 cv2.xfeatures2d.SIFT_create()
我收到此错误消息:

error: OpenCV(4.2.0) /Users/travis/build/skvark/opencv-python/opencv_contrib/modules/xfeatures2d/src/sift.cpp:1210: 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 'create'

说要设置 OPENCV_ENABLE_NONFREE 但我用已经有该选项的 Homebrew 软件安装了 opencv enabled .

编辑:
我试过 pip install opencv-contrib-python-nonfree我得到这个错误
ERROR: Could not find a version that satisfies the requirement opencv-contrib-python-nonfree (from versions: none)
ERROR: No matching distribution found for opencv-contrib-python-nonfree

最佳答案

我能够重建您的错误,并且能够解决此问题。仔细查看安装 OpenCV 时使用的 Homebrew 的 Python 公式:https://formulae.brew.sh/formula/opencv .在撰写本文时,它正在使用 python@3.8 ,这意味着它使用 Homebrew 的 Python 3.8 而不是位于 /usr/local/bin/python3 中的默认 Python 3.7.7(在撰写本文时)如果您使用 Homebrew 安装 Python 的标准公式。因为从 Homebrew 安装后找不到 OpenCV,所以您尝试使用 pip安装它。 opencv-contrib-python公式没有启用非自由模块,并且您上面用来尝试获取非自由模块的公式已过时。

因此,当您使用 Homebrew 安装 OpenCV 时,您会收到上述错误,因为即使您通过 Homebrew 安装了带有 contrib 包和 Python 包装器的 OpenCV,您使用的是 pip。从您的系统提供来安装 OpenCV,但您没有使用为您安装的 Homebrew。具体来说,您没有使用安装用于 OpenCV 的 Python 的实际版本。

在我的系统上,可以在这里找到这个版本的 Python 3.8:

/usr/local/Cellar/python@3.8/3.8.2/bin

我还必须确保 numpy在导入 OpenCV 之前安装。导航到上述目录,然后运行 ​​ pip在此目录中本地:
$ cd /usr/local/Cellar/python@3.8/3.8.2/bin
$ ./pip install numpy

完成后,运行 python3 的本地版本,然后尝试导入 OpenCV 和 SIFT 模块:
$ ./python3
Python 3.8.2 (default, Mar 11 2020, 00:29:50)
[Clang 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.xfeatures2d.SIFT_create()
<xfeatures2d_SIFT 0x10b045550>
>>>

展望 future ,如果您决定使用 Homebrew 中的 Python 3.8,则必须使用 OpenCV 的非免费模块。如果您想更进一步,让您的系统使用此版本的 Python 而不是 /usr/local/bin/python3 中的 Python 3.7 ,您必须更新您的 .bashrc文件位于您的主目录中,以便使用此版本的 Python 而不是那里的版本:
export PATH="/usr/local/Cellar/python@3.8/3.8.2/bin:$PATH"

如果您更喜欢使用 pip opencv-contrib-python 的公式并坚持使用 /usr/local/bin/python3 中的 Python 版本,非自由模块不附带此功能,因此您必须为此工作克隆 repo 并在启用这些功能的情况下重建包装器(来源: https://github.com/skvark/opencv-python/issues/126#issuecomment-596689259)。

我必须手动指出 Qt 在我的计算机上的安装位置。最初设置 OpenCV 在我的命令行路径中找不到 Qt。我做了 brew install qt第一的。您必须在 CMAKE_PREFIX_PATH 中指定此路径。环境变量。
最后,假设您将 repo 克隆到您的 Downloads目录:
brew install qt
cd ~/Downloads
git clone --recursive https://github.com/skvark/opencv-python.git
cd opencv-python
export CMAKE_ARGS="-DOPENCV_ENABLE_NONFREE=ON -DENABLE_CONTRIB=1 -DOPENCV_EXTRA_MODULES_PATH=/Users/<User>/Downloads/opencv-python/opencv_contrib/modules/ -DCMAKE_PREFIX_PATH=/usr/local/Cellar/qt/5.14.2/"
python3 setup.py build
python3 setup.py install
5.14.2以上是我电脑上的 Qt 版本。确保将其更改为计算机上安装的任何版本。
也替换 <User>使用您登录时使用的计算机的用户名。你可以通过 cd ~ 找到这个。在终端中,通过执行 pwd 查看目录分隔符之后的最终字符串是什么.

由于 SIFT 的专利现已过期,我希望这将从非自由包中删除,并将成为主要 OpenCV 库的一部分!

关于python - 无法在 MacO 上使用 opencv 运行 Sift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61597130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com