在knnMatchImpl中断言失败(queryDescriptors.type()== trainDescCollection [0] .type()),

时间:2014-03-11 22:16:16

标签: c++ image opencv image-processing machine-learning

BOWImgDescriptorExtractor DescriptorExtractor 一起用作 SIFT ,将 DescriptorMatcher 用作 ButeForce 时我的错误是

  

OpenCV错误:断言失败(queryDescriptors.type()== trainDescCollection [0] .type())in knnMatchImpl,

我的错误是什么?

当我想要计算时 例如

  

bowide-> compute(img,keypoints,response_hist);

2 个答案:

答案 0 :(得分:10)

使用Surf功能检测器和带BFMatcher的提取器时出现了同样的错误。

发生错误是因为查询描述符mat和train描述符mat不具有相同的类型 - 如错误消息中所述。 只有当特征检测器无法计算出火车或查询图像的关键点时,才会发生这种情况。 在进行匹配之前,请检查关键点向量的大小是否为零。

答案 1 :(得分:0)

我也有同样的错误。还有另一个可能的原因:字典的dtype应为float32。事实证明,在调用setVocabulary函数之前,我使用numpy对字典进行了一些操作,这隐式地更改了字典的dtype