2011-07-17 98 views
15

我知道有一个约Python的OpenCV的很多的问题,但我没有找到关于这个专题的帮助。OpenCV的Python和SIFT特征

我想从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(另一个python绑定OpenCV < = 2.1)没有成功。

+0

你有没有内置来源OpenCV的? – Unapiedra

+0

是的,我使用选项CMAKE_BUILD_TYPE = RELEASE,CMAKE_INSTALL_PREFIX,BUILD_PYTHON_SUPPORT = ON,WITH_QT = ON(编译工作没有问题),从源代码构建OpenCV 2.3。 –

+0

在willowgarage的家伙把OpenCV 2.3在线文档[链接](http://opencv.itseez.com/)。显然在python中的features2d不包含很多东西。 –

回答

1

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

+5

SIFT在OpenCV中(您可以查看C++文档)。为什么它不能从python访问真的很神秘。当然还有其他的兴趣点检测器,但SIFT是一种基准... –

+1

也许这个链接的Python代码足以满足你需要做的事情:。看起来这将很容易与OpenCV代码混合使用。 – ely

+1

谢谢。我使用过这样的技巧......我想我会坚持这一点。但我仍然不清楚为什么SIFT无法从Python访问。 –

0

你可以计算SIFT特征使用OpenCV的python绑定如下:

import cv2 

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

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