【问题标题】:OpenCV Python and SIFT featuresOpenCV Python 和 SIFT 功能
【发布时间】:2011-10-07 01:19:21
【问题描述】:

我知道有很多关于 PythonOpenCV 的问题,但我没有找到关于这个特殊主题的帮助。

我想从 python OpenCV 中的图像中提取 SIFT 关键点

我最近安装了 OpenCV 2.3,可以访问 SURF 和 MSER 但不能访问 SIFT。 我在 python 模块(cv 和 cv2)中看不到任何与 SIFT 相关的内容(我有点撒谎:有 2 个常量:cv2.SIFT_COMMON_PARAMS_AVERAGE_ANGLEcv2.SIFT_COMMON_PARAMS_FIRST_ANGLE)。

这让我困惑了一段时间。 这是否与 OpenCV 的某些部分在 C 中而其他在 C++ 中的事实有关? 有什么想法吗?

P.S.:我也尝试过 pyopencv(OpenCV

【问题讨论】:

  • 您是否从源代码构建了 OpenCV?
  • 是的,我已经使用选项 CMAKE_BUILD_TYPE=RELEASE、CMAKE_INSTALL_PREFIX、BUILD_PYTHON_SUPPORT=ON、WITH_QT=ON 从源代码构建 OpenCV 2.3(编译工作没有问题)。
  • willowgarage 的人把 OpenCV 2.3 的文档放到网上 link。显然,python 中的 features2d 并没有包含很多东西。

标签: python opencv sift


【解决方案1】:

您确定允许 OpenCV 支持 SIFT 吗? SIFT 是一种专有特征类型,由英属哥伦比亚大学和该算法的发明者 David Lowe 在美国获得专利。在我自己的研究中,我不得不多次重写这个算法。事实上,一些视觉研究人员试图避免 SIFT 并使用其他尺度不变模型,因为 SIFT 是专有的。

【讨论】:

  • SIFT 在 OpenCV 中(您可以查看 C++ 文档)。为什么不能从 python 访问它真的很神秘。当然有兴趣点检测器,但 SIFT 是一种基线......
  • 也许这个链接的 Python 代码足以满足您的需要:janeriksolem.net/2009/02/sift-python-implementation.html>。看起来这很容易与 OpenCV 代码混合。
  • 谢谢。我曾经使用过这样的技巧......我想我会坚持下去。但我仍然不明白为什么不能从 Python 访问 SIFT。
【解决方案2】:

您可以使用 OpenCV python 绑定计算 SIFT 特征,如下所示:

  import cv2

  sift = cv2.SIFT()
  keypoints, descriptors = sift.detectAndCompute(imgray,None)

【讨论】:

  • SIFT() 不适用于 cv2 库。我也尝试过 Python(x,y),但没有成功。你能告诉,你从哪里得到图书馆?你是从源代码还是其他方法编译的?
【解决方案3】:

SIFT 已patented,不得免费用于商业用途。

但如果你想将它用于教育目的,这很简单:

pip install opencv-python opencv-contrib-python

然后你就可以了

import cv2

# Initiate SIFT detector
sift = cv2.xfeatures2d.SIFT_create()

# find the keypoints and descriptors with SIFT
kp1, des1 = sift.detectAndCompute(img, None)

【讨论】:

    【解决方案4】:

    在 ubuntu 上,您可以通过安装此版本的 opencv-contrib 来修复

    pip3 install opencv-contrib-python==3.4.0.12
    

    【讨论】:

    • 这与去年的答案相同。如果版本很重要,请澄清其他答案。它还缺少很多信息才能成为一个体面的答案。
    【解决方案5】:

    我不能说这是否是 SIFT 不能通过 Python 用于 OpenCV 2.3 的原因(正如原始问题所要求的那样)。但是,阻止 SIFT 包含在 OpenCV 中的 the patent 已于 2020 年 3 月 6 日到期。

    OpenCV 的分布式构建现在包括自 4.4.0 版以来的 SIFT,可通过 Python 中的cv2.SIFT_create() 访问。

    有关其使用的更多信息,请参阅the documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-20
      • 2014-08-24
      • 1970-01-01
      • 2018-07-01
      • 2013-07-31
      • 1970-01-01
      • 2013-01-02
      相关资源
      最近更新 更多