我正在运行一些使用OpenCV提供的BOW 框架执行对象分类的代码。
只要我使用SIFT或SURF作为 DescriptorExtractor 一切都很好。
现在我想用 FREAK 作为 DescriptorExtractor。作为我的第一步,我收集所有图像的所有描述符。当我使用 FREAK 时,我必须添加一个对话
descriptor.convertTo(descriptor, CV_32F);
,否则集群方法会引发异常。到目前为止,一切都很好。
然后,当我尝试使用为每个图像生成标记响应时 bowide_->compute(image, keypoints, result);
我得到一个异常 OpenCVError: 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 或者我需要进行更多转换,有什么想法吗?
我尝试了不同的匹配器,但没有成功。
提前致谢