OpenCV BFMatcher match()总是返回错误

时间:2014-06-14 22:24:38

标签: python opencv

我正在训练一个带有4个描述符的BFMatcher:

bf = cv2.BFMatcher()

bf.clear()
bf.add(des1)
bf.add(des2)
bf.add(des3)
bf.add(des4)
bf.train()

bf.match(des1)

代码bf.match(des1)会抛出此错误:

error: ..\..\..\..\opencv\modules\core\src\stat.cpp:2473: error: (-215) type == src2.type() && src1.cols == src2.cols && (type == CV_32F || type == CV_8U) in function cv::batchDistance

这可能是什么原因?描述符是ORB描述符。

2 个答案:

答案 0 :(得分:3)

你是对的,你可以在列表中添加描述符,但是你只能匹配单个描述符,所以,遍历整个des1数组并匹配每个描述符并将匹配保存在列表中,如果你没有,则保存一组我希望他们重复!

matches = set()
for desc in desc1:
    matches_img = bf.knnMatch(desc,k=2)
    for match in matches_img:
        matches.add(match)

答案 1 :(得分:0)

你应该使用:

    bf  = cv2.BFMatcher(cv2.NORM_HAMMING)

使用ORB时。错误显示匹配器的defualt L2距离不支持用于ORB描述符的类型。