OpenCV Python and SIFT features



我知道有很多关于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++语言有关?任何想法?

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

我不能说这是否是通过Python无法在OpenCV 2.3中使用SIFT的原因(如原始问题所问)。然而,阻止SIFT被包含在OpenCV中的专利已于2020-03-06到期。

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

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

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

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)

在ubuntu上你可以安装这个版本的openv -contrib

pip3 install opencv-contrib-python==3.4.0.12

相关内容

  • 没有找到相关文章

最新更新