无法在OpenCV中使用SURF,SIFT

发布于 2021-01-29 19:35:21

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

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

关注者
0
被浏览
71
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看