我运行了一些代码,使用 OpenCV 提供的 BOW-frame 执行对象分类。
只要我使用 SIFT 或 SURF 作为DescriptorExtractor,一切都很好。
现在我想使用FREAK作为DescriptorExtractor。作为我的第一步,我收集所有图像的所有描述符。当我使用FREAK时,我必须添加一个对话
descriptor.convertTo(descriptor, CV_32F);
,或者cluster方法抛出异常。到目前为止一切都很好。
然后,当我尝试使用bowide_->compute(image, keypoints, result);
我得到一个例外OpenCV Error: Assertion failed (queryDescriptors.type() == trainDescCollection[0].type()) in knnMatchImpl, file /home/kastor/Development/opencv-2.4.7/modules/features2d/src/matchers.cpp, line 351
queryDescriptors.type() == trainDescCollection[0].type().
下一步是训练SVM。 正如我所说,整个事情适用于SIFT和SURF。任何想法,如果可能的话 以相同的方式使用FREAK还是需要进行更多转换?
我尝试了不同的匹配器,但没有成功。
提前致谢