一尘不染

无法在OpenCV中使用SURF,SIFT

python

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

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()遇到相同的错误…因此它丢失了,我必须添加它,但我不知道如何。


阅读 347

收藏
2020-12-20

共1个答案

一尘不染

我认为这远非“正确”的方法(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可用。

2020-12-20