我正在使用相同大小的二进制图像,提取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)