将 BOWImgDescriptorExtractor 与 DescriptorExtractor 一起用作 SIFT ,将 DescriptorMatcher 用作 ButeForce 时我的错误是
OpenCV错误:断言失败(queryDescriptors.type()== trainDescCollection [0] .type())in knnMatchImpl,
我的错误是什么?
当我想要计算时 例如
bowide-> compute(img,keypoints,response_hist);
答案 0 :(得分:10)
使用Surf功能检测器和带BFMatcher的提取器时出现了同样的错误。
发生错误是因为查询描述符mat和train描述符mat不具有相同的类型 - 如错误消息中所述。 只有当特征检测器无法计算出火车或查询图像的关键点时,才会发生这种情况。 在进行匹配之前,请检查关键点向量的大小是否为零。
答案 1 :(得分:0)
我也有同样的错误。还有另一个可能的原因:字典的dtype
应为float32
。事实证明,在调用setVocabulary
函数之前,我使用numpy对字典进行了一些操作,这隐式地更改了字典的dtype
。