1

我正在运行一些使用OpenCV提供的BOW 框架执行对象分类的代码。

只要我使用SIFTSURF作为 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 或者我需要进行更多转换,有什么想法吗?

我尝试了不同的匹配器,但没有成功。

提前致谢

4

0 回答 0