无法在OpenCV中使用SURF,SIFT

我正在尝试一个简单的事情

detector = cv2.SIFT()

并得到这个错误

detector = cv2.SIFT()

AttributeError: 'module' object has no attribute 'SIFT'

我不明白,因为安装了cv2。

cv2.__version__

$Rev: 4557 $

我的系统是Ubuntu 12.04。

也许有人遇到了同样的问题,可以帮助我。

长话短说, testypypypypy.py

import cv2

detector = cv2.SIFT()

错误:

Traceback (most recent call last):

File "testypypy.py", line 3, in <module>

detector = cv2.SIFT()

AttributeError: 'module' object has no attribute 'SIFT

如果我接受SURF它是因为SURF存在,dir(cv2)但是如果我也接受,则会cv2.BFMatcher()遇到相同的错误…因此它丢失了,我必须添加它,但我不知道如何。

回答:

我认为这远非“正确”的方法(Ubuntu上的“正确”方法似乎是坚持使用损坏的和/或过时的OpenCV),但对我来说,从源代码构建opencv-2.4.6.1会带回来cv2.SIFT和cv2.SURF。

脚步:

  1. 从opencv.org下载opencv- 2.4.6.1.tar.gz。
  2. 提取源:

    tar -xf opencv-2.4.6.1.tar.gz -C /tmp

  3. 配置源。这将告诉OpenCV安装到主目录中的.opencv-2.4.6.1:

    cmake -D CMAKE_BUILD_TYPE=RELEASE \

    -D BUILD_PYTHON_SUPPORT=ON \

    -D WITH_XINE=ON \

    -D WITH_OPENGL=ON \

    -D WITH_TBB=ON \

    -D BUILD_EXAMPLES=ON \

    -D BUILD_NEW_PYTHON_SUPPORT=ON \

    -D WITH_V4L=ON \

    -D CMAKE_INSTALL_PREFIX=~/.opencv-2.4.6.1 \

    /tmp/opencv-2.4.6.1

  4. 构建并安装:

    cd /tmp/opencv-2.4.6.1

    make -j4

    make install

  5. 设置PYTHONPATH(这在bash中有效,我对其他shell毫无头绪):

    export PYTHONPATH=~/.opencv-2.4.6.1/lib/python2.7/dist-packages

现在,如果我启动python并导入cv2(对我来说,这将产生gnome-keyring警告),则我有cv2.SIFT和cv2.SURF可用。

以上是 无法在OpenCV中使用SURF,SIFT 的全部内容, 来源链接: utcz.com/qa/398269.html

回到顶部