在OpenCV3.1.0中使用SIFT,SURF算法


寫在前邊:

1.我使用的是python2.7 + OpenCV3.1.0

2.OpenCV3.0.0+的文檔有很大問題,很多文檔寫的還是OpenCV2.0+, OpenCV3.0+根本用不了,其中有一部分原因是,有一些函數被放在了opencv_contrib這個模塊里邊,需要把這個擴展模塊另外編譯進去才可以用。官方的說法是,那些還不十分穩定的函數模塊都被放在了opencv_contrib模塊里邊,因為不穩定,所以不能放在release里邊,在opencv_contrib里邊調好之后才會放入release里邊。

3.要想在OpenCV3.0+中直接使用SIFT, SURF算法,需要現安裝擴展模塊opencv_contrib。這兩個算法都在這個擴展模塊的xfeatures2d模塊里。在這里可以找到https://github.com/Itseez/opencv_contrib/tree/master/modules/xfeatures2d/src

注:安裝擴展模塊opencv_contrib 參考我的另一篇文章:http://www.cnblogs.com/asmer-stone/p/5089764.html

 

下邊是在OpenCV3.1.0中調用SURF算法的代碼surf.py:

(調用SIFT算法和這個一樣,只需要把代碼中所有的surf換成sift即可)

import cv2

img = cv2.imread('1.jpg')
gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

surf = cv2.xfeatures2d.SURF_create()
kp = surf.detect(gray,None)

img = cv2.drawKeypoints(gray, kp, img)

cv2.imshow("img", img)

k = cv2.waitKey(0)
if k & 0xff == 27:
    cv2.destroyAllWindows()

結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM