使用ORB描述符训练svm?

时间:2017-05-19 04:02:07

标签: c++ opencv svm orb

您好我一直在努力训练有功能的svm,但我不明白如何处理使用ORB计算关键点的描述符。我知道svm需要数据矩阵和标签矩阵,但我不知道如何将描述符Mat传递给有效格式。 我已经读过有关BoF(袋子的单词/功能)但我不知道如何使用它。 谢谢你的帮助。

下面的代码允许我获取图像的描述符。下一步是什么?

            std::vector<KeyPoint> kp;
            Mat desc;
        // Default parameters of ORB
            int nfeatures = 128; 
            float scaleFactor = 1.2f; 
            int nlevels = 8;    
            int edgeThreshold = 15; // Changed default (31);
            int firstLevel = 0; 
            int WTA_K = 2; 
            int scoreType = ORB::HARRIS_SCORE; 
            int patchSize = 31; 
            int fastThreshold = 20;

            Ptr<ORB> myORB = ORB::create(nfeatures, scaleFactor, nlevels, edgeThreshold, firstLevel, WTA_K, scoreType,
                patchSize, fastThreshold);

            myORB->detectAndCompute(src, Mat(), kp, desc);

            features.push_back(desc);

1 个答案:

答案 0 :(得分:0)

我强烈建议您在OpenCV中使用python,这将为您节省大量时间。在python中,这将只有10行代码。

您可以参考此link获取ORB。一旦获得功能,您就可以使用scikit-learn svm来训练SVM分类器。