私はこの単純な OpenCV機能マッチングの例 に正確に従いました:
import cv2
img = cv2.imread('box.png',0) # queryImage
orb = cv2.ORB() # Initiate ORB detector
# find the keypoints and descriptors with ORB
kp1, des1 = orb.detectAndCompute(img, None)
次のエラーが表示されています:
TypeError: Incorrect type of self (must be 'Feature2D' or its derivative)
OpenCV 3.3.1を使用しています
これはOpenCVバージョンの互換性の問題です。 cv2.ORB_create()
の代わりにcv2.ORB()
を使用してください。
コードは次のようになります。
import cv2
img = cv2.imread('box.png',0) # queryImage
orb = cv2.ORB_create() # Initiate SIFT detector
# find the keypoints and descriptors with SIFT
kp1, des1 = orb.detectAndCompute(img, None)
python構造が「頻繁に」変化することに注意してください(とにかくインターネットの歴史において)。バージョンに注意を払うことをお勧めします。
正しいリンクを見つけるには、ここに移動してください: https://docs.opencv.org/
3.1.1-> 3.1.0-> https://docs.opencv.org/3.1.0/ (OpenCV-Pythonチュートリアル-> https:// docs .opencv.org/3.1.0/d6/d00/tutorial_py_root.html )...(古い)readthedocsサイトほどきれいではありませんが、より正確です。 :)
cv2.ORB_create()を使用します