2011-07-17 127 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),但沒有成功。 你能告訴,你從哪裏得到圖書館?你是從源代碼還是其他方法編譯? –