OpenCV ORB描述符:TypeError:不正确的self类型(必须是'Feature2D'或其衍生物)

时间:2018-04-22 22:52:35

标签: python opencv image-processing computer-vision opencv3.0

我完全遵循了这个简单的OpenCV Feature Matching example

import cv2

img = cv2.imread('box.png',0) # queryImage
orb = cv2.ORB()               # Initiate SIFT detector

# find the keypoints and descriptors with SIFT
kp1, des1 = orb.detectAndCompute(img, None)

并且一直收到以下错误:

TypeError: Incorrect type of self (must be 'Feature2D' or its derivative)

我正在使用OpenCV 3.3.1

3 个答案:

答案 0 :(得分:39)

这是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)

答案 1 :(得分:2)

请注意,python结构会“频繁”更改(无论如何,在Internet历史上都是如此)。注意版本是个好主意。

转到此处找到正确的链接: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网站那么漂亮,但是更多准确。 :)

答案 2 :(得分:0)

使用cv2.ORB_create()可以做到