OpenCV Python 和 SIFT 功能

发布于 2024-11-25 05:15:03 字数 501 浏览 2 评论 0原文

我知道有很多关于 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++ 语言这一事实​​有关? 有什么想法吗?

PS:我也尝试过 pyopencv (OpenCV <= 2.1 的另一个 python 绑定)但没有成功。

I know there is a lot of questions about Python and OpenCV but I didn't find help on this special topic.

I want to extract SIFT keypoints from an image in python OpenCV.

I have recently installed OpenCV 2.3 and can access to SURF and MSER but not SIFT.
I can't see anything related to SIFT in python modules (cv and cv2) (well I'm lying a bit: there are 2 constants: cv2.SIFT_COMMON_PARAMS_AVERAGE_ANGLE and cv2.SIFT_COMMON_PARAMS_FIRST_ANGLE).

This puzzles me since a while.
Is that related to the fact that some parts of OpenCV are in C and other in C++?
Any idea?

P.S.: I have also tried pyopencv (another python binding for OpenCV <= 2.1) without success.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

倾城°AllureLove 2024-12-02 05:15:03

我不能说这是否是 SIFT 无法通过 OpenCV 2.3 的 Python 获得的原因(正如最初的问题所问的那样)。不过,阻止 SIFT 纳入 OpenCV 的专利已于 2020 年 3 月 6 日到期。

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

有关其使用的更多信息,请参阅文档

I can't say whether this is the reason SIFT was not available via Python for OpenCV 2.3 (as the original question asks). However, the patent which was preventing SIFT from being included in OpenCV expired on 2020-03-06.

The distributed build of OpenCV now includes SIFT since version 4.4.0, accessible via cv2.SIFT_create() in Python.

See the documentation for further information on its use.

许一世地老天荒 2024-12-02 05:15:03

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

  import cv2

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

You can compute SIFT features using OpenCV python bindings as follows:

  import cv2

  sift = cv2.SIFT()
  keypoints, descriptors = sift.detectAndCompute(imgray,None)
も让我眼熟你 2024-12-02 05:15:03

SIFT 已申请专利,并且不能免费用于商业用途。

但如果您想将其用于教育目的,很简单:

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)

SIFT has been patented and is not free for commercial use.

But if you want to use it for educational purposes, it's simple:

pip install opencv-python opencv-contrib-python

and then you can do

import cv2

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

# find the keypoints and descriptors with SIFT
kp1, des1 = sift.detectAndCompute(img, None)
╰つ倒转 2024-12-02 05:15:03

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

pip3 install opencv-contrib-python==3.4.0.12

On ubuntu you can fix with installing this version of opencv-contrib

pip3 install opencv-contrib-python==3.4.0.12
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文