OpenCV Python和SIFT功能

问题描述 投票:17回答:4

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

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

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

这让我困惑了一段时间。这是否与OpenCV的某些部分在C和C ++中的其他部分相关?任何的想法?

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

python opencv sift
4个回答
1
投票

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


0
投票

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

  import cv2

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

0
投票

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)

-1
投票

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

pip3 install opencv-contrib-python==3.4.0.12
© www.soinside.com 2019 - 2024. All rights reserved.