【问题标题】:Convert opencv's surf descriptor to a matrix将opencv的surf描述符转换为矩阵
【发布时间】:2014-01-16 03:58:41
【问题描述】:

我是 C 和 OpenCV 的新手,我想获取 surf 描述符的数据矩阵。

double tt = (double)cvGetTickCount();
cvExtractSURF( object, 0, &objectKeypoints, &objectDescriptors, storage, params );
printf("Object Descriptors: %d\n", objectDescriptors->total);

如果我使用cvSave(fileName, objectDescriptors)那么我可以得到XML文件,我的问题是我如何才能得到objectDescriptor数据的描述符矩阵,例如有45个关键点,那么矩阵是A=matrix[45][64] ?

我怎样才能直接从objectDescriptors获得A?

如何从 xml 文件中获取 A?

【问题讨论】:

    标签: opencv surf


    【解决方案1】:

    您可以使用 OpenCV 新 API SurfFeatureDetector。它将直接将关键点保存到vector<KeyPoint>

    int minHessian = 400;
    SurfFeatureDetector detector( minHessian );
    std::vector<KeyPoint> keypoints;
    detector.detect( img, keypoints);
    

    查看cv::KeyPoint Class Reference

    查看[1][2] 以获得真实示例。

    【讨论】:

    • 你好,我看到descriptor的数据类型是Mat,请问如何转换成数组?
    • 关键点的描述符。 // computing descriptors SurfDescriptorExtractor extractor; Mat descriptors1, descriptors2; extractor.compute(img1, keypoints1, descriptors1);
    • @user3200905 使用上述答案中的detect()方法。
    • ?如何使用? vector&lt;Descriptor&gt; detector.detect( img, descriptor)? 。有例子吗?
    • @user3200905 你可以参考我在回答中给出的链接。
    猜你喜欢
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 2014-05-07
    • 2013-09-05
    • 2012-06-14
    相关资源
    最近更新 更多