我正在训练一个带有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描述符。
答案 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描述符的类型。