cv2 3.0.0 cv2.FlannBasedMatcher:flann.knnMatch抛出cv2错误

发布于 2021-01-29 15:05:48

我想按照http://opencv-python-
tutroals.readthedocs.org/en/latest/py_tutorials/py_feature2d/py_matcher/py_matcher.html中的说明
在Python中使用基于flann的匹配器

由于我使用的是OpenCV 3.0.0,因此必须调整有关SIFT检测器初始化的代码。其余部分不变

def calculateMatch(self):
    # Initiate SIFT detector
    sift = cv2.xfeatures2d.SIFT_create()

    # find the keypoints and descriptors with SIFT
    (kp1, desc1) = sift.detectAndCompute(self.image1,None)
    (kp2, desc2) = sift.detectAndCompute(self.image2,None)

    # FLANN parameters
    FLANN_INDEX_KDTREE = 0

    index_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 5)
    search_params = dict(checks=50)   # or pass empty dictionary

    flann = cv2.FlannBasedMatcher(index_params,search_params)
    matches = flann.knnMatch(desc1,desc2,k=2)

运行代码时,我收到以下消息:

cv2.error: cv2.cpp:161: error: (-215) The data should normally be NULL! in function allocate

在行中:

matches = flann.knnMatch(desc1,desc2,k=2)

另一则评论:如果使用蛮力匹配器,一切正常:

bf = cv2.BFMatcher()
matches = bf.knnMatch(desc1, desc2, k=2)
关注者
0
被浏览
95
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我在计算机上遇到了同样的问题。因此,我使用Ubuntu 14.04制作了一个新的虚拟机并进行了测试。

    我不知道为什么....但是,我用OpenCV 3.0.0-rc1解决了这个问题。

    如果您使用的是OpenCV3.0.0,请尝试其他版本的OpenCV3

    对于安装,我指的是下一页。 http://rodrigoberriel.com/2014/10/installing-opencv-3-0-0-on-
    ubuntu-14-04/
    在此页面上,Opencv的版本为Alpha。如以下示例所示。

    wget https://github.com/Itseez/opencv/archive/3.0.0-rc1.zip -O opencv-3.0.0-rc1.zip



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看