当前位置: 首页 > 面试题库 >

无法在OpenCV中使用SURF,SIFT

梁华清
2023-03-14
问题内容

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

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可用。



 类似资料:
  • 问题内容: 我在Java中使用的是OpenCV 3.0(最新版本),但是当我使用SURF算法或SIFT算法时,它不起作用并抛出Exception,该异常表示: 我已经用谷歌搜索过,但是对这类问题的回答并不能解决我的问题。如果有人知道这个问题,请告诉我。 提前致谢! 更新: 第三行下面的代码引发异常。 问题答案: 如果从源代码编译OpenCV,则可以自己编辑opencv / modules / fe

  • 问题内容: 我正在尝试释放通过API调用获取的凸轮捕获 我该如何释放它。有一个名为“ ReleaseCapture”的函数,但没有python绑定。 有人可以提出其他选择吗? 非常感谢 问题答案: 我在这里找到了类似的答案 删除 捕获 后,请谨慎使用从凸轮 捕获的 帧 或其他图像 __ 问候

  • 问题内容: 在执行其他操作时,opencv可以正常工作。它可以打开图像并显示图像。但无法打开视频。 我用来打开视频的代码如下 但是执行时,它会输出如下错误消息 我和可以播放此视频,但opencv无法播放。 我已经安装和编解码器包。(使用) 我的ubuntu版本是。 我不确定是否是编解码器问题? 我已经使用或重建了opencv ,但它根本不影响问题。错误消息永远不会改变。 问题答案: 我将该文件转换

  • 问题内容: 我正在编写一个程序,该程序需要在Tkinter窗口中显示视频流。由于还将有用于执行各种功能的按钮,因此我使用网格来组织一切。 以下代码是从“显示”网络摄像头序列TkInter修改而来的,在我的Raspberry Pi上可以正常工作: 但是,将其与Tkinter结合使用是行不通的。(在下面的内容中,我尝试注释掉Display 1,Display 2和都不显示。) 如何显示视频? 问题答案

  • 问题内容: 在我的xcode项目中添加OpenCV 2框架后,我尝试搜索samlpes或与swift集成的教程。 有没有很好的教程呢? 问题答案: OpenCV是用C ++编写的框架。苹果的参考资料告诉我们 您不能将C 代码直接导入Swift。而是为C 代码创建一个Objective-C或C包装器。 因此,您不能直接在一个快速的项目中导入和使用OpenCV,但这实际上一点都不好,因为您(需要)继续

  • 问题内容: 我想使用Android Studio使用Gradle构建工具开发应用程序。我无法在上插入存储库和库。我的文件如下: 如何在项目中添加OpenCV? 问题答案: 您可以在Android Studio中轻松完成此操作。 请按照以下步骤将Open CV作为库添加到您的项目中。 libraries在项目主目录下创建一个文件夹。例如,如果您的项目是OpenCVExamples,则将创建一个Ope