Introduction to SIFT (Scale-Invariant Feature Transform)


SIFT OpenCV 官方文檔:

https://docs.opencv.org/master/da/df5/tutorial_py_sift_intro.html

https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_feature2d/py_sift_intro/py_sift_intro.html

 

 

AttributeError: module 'cv2' has no attribute 'SIFT'

在用python使用opencv進行SIFT時候,編譯出現這樣問題:

Traceback (most recent call last):
  File "F:\image\test.py", line 7, in <module>
    sift = cv2.SIFT()

  

出錯代碼如下:

import cv2
import numpy as np

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

sift = cv2.SIFT()
kp = sift.detect(gray,None)

img=cv2.drawKeypoints(gray,kp)

  

原因:opencv將SIFT等算法整合到xfeatures2d集合里面了。變更后寫法如下:

 

import cv2
import numpy as np
 
img = cv2.imread('home.jpg')
gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
 
sift = cv2.xfeatures2d.SIFT_create()
kp = sift.detect(gray,None)
 
img=cv2.drawKeypoints(gray,kp,img)
cv2.imwrite('sift_keypoints.jpg',img)

  

然后又出現錯誤:

Traceback (most recent call last):
  File "F:\image\test.py", line 7, in <module>
    sift = cv2.xfeatures2d.SIFT_create()
AttributeError: module 'cv2' has no attribute 'xfeatures2d'

  

再嘗試解決:

出錯原因:

**原因:**3.X以后OpenCv只包含部分內容,需要神經網絡或者其他的函數需要導入opencv_contrib

解決方法:

pip install opencv-contrib-python

注意: 
如果已經安裝OpenCv2,則需要先卸載pip uninstall opencv-python再安裝

參考資料:https://pypi.python.org/pypi/opencv-contrib-python

 

再次出錯:

cv2.error: OpenCV(3.4.3) C:\projects\opencv-python\opencv_contrib\modules\xfeatures2d\src\sift.cpp:1207: 
error: (-213:The function/feature is not implemented) This algorithm is patented and is excluded in this configuration;
Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 'cv::xfeatures2d::SIFT::create'

  

 

問題待解決。。。

 

------------------------------

感謝,按照一樓大神的方法,問題已解決。

版本的問題,直接在終端pip install opencv-contrib-python和你一樣的問題,后來重新裝了opencv-contrib-python 3.3版本,可以正常使用。
具體來說就是
第一步,卸載原有的opencv-contrib-python
pip3 uninstall opencv-contrib-python(我使用的是python3.6.5)
如果你使用的是python2的版本,使用pip uninstall opencv-contrib-python
第二步,安裝新的版本
pip3 install --user opencv-contrib-python==3.3.0.10我使用的是python3.6.5)
如果你使用的是python2的版本,使用pip install --user opencv-contrib-python==3.3.0.10。
如果出現了readtimeouterror就關掉terminal重新輸入幾次。因為下載源在外網,可能不穩定。

 ”


免責聲明!

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



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