OpenCV ORB 描述符:TypeError:不正确的自我类型(必须是“Feature2D”或其派生词)
Posted
技术标签:
【中文标题】OpenCV ORB 描述符:TypeError:不正确的自我类型(必须是“Feature2D”或其派生词)【英文标题】:OpenCV ORB descriptor: TypeError: Incorrect type of self (must be 'Feature2D' or its derivative) 【发布时间】:2018-10-02 22:22:56 【问题描述】:我完全遵循了这个简单的OpenCV Feature Matching example:
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
【问题讨论】:
【参考方案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)
【讨论】:
【参考方案2】:请注意,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 网站漂亮,但更准确。 :)
【讨论】:
【参考方案3】:cv2.ORB_create()
会做我认为的工作
【讨论】:
如果您要复制答案,请格式化您的代码。以上是关于OpenCV ORB 描述符:TypeError:不正确的自我类型(必须是“Feature2D”或其派生词)的主要内容,如果未能解决你的问题,请参考以下文章