OpenCV:由于描述符形状不同,BFmatcher崩溃

时间:2016-07-22 13:24:57

标签: python opencv image-processing match sift

我正在使用相同大小的二进制图像,提取ORB功能但是在比较我收到的描述符时:

错误

  

的OpenCV / OpenCV的/模块/核心/ SRC / stat.cpp:3757:   错误:(-215)type == src2.type()&&   src1.cols == src2.cols&& (type ==   CV_32F ||在函数中输入== CV_8U)   batchDistance

然而,当我用

检查描述符时
print img.dtype, np.shape(img), np.shape(descriptors)
print oldimg.dtype, np.shape(oldimg), np.shape(olddescriptors)

我得到了

uint8 (21, 27) (22, 32)
uint8 (21, 27) (17, 32)

显然这似乎是错误。另一方面,我无能为力。有人有想法吗?至少有一些在线教程,如何手动匹配描述符?

顺便说一下,如果我使用SIFT,SURF等,它就是一样的。

这是我的代码:

我正在使用python 2.7和OpenCV 2.4

    orb = cv2.ORB_create(edgeThreshold=3)
    oldkeypoints, olddescriptors = orb.detectAndCompute(oldimg,None)
    keypoints, descriptors = orb.detectAndCompute(img,None) 

    bf = cv2.BFMatcher(cv2.NORM_HAMMING)
    bf.clear()
    bf.add(olddescriptors)
    bf.train()

    matches = bf.match(descriptors) # crashes here
    matches = sorted(matches, key = lambda x:x.distance)

0 个答案:

没有答案