c++ - 使用 ORB 描述符训练 svm?

标签 c++ opencv svm orb

您好,我一直在尝试训练具有特征的支持 vector 机,但我不明白如何处理使用 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);

最佳答案

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

可以引用这个link对于 ORB。一旦获得功能,就可以使用 scikit-learn svm用于训练 SVM 分类器。

关于c++ - 使用 ORB 描述符训练 svm?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44061239/

相关文章:

c++ - 将单 channel 图像转换为 3 channel 图像 C++/OpenCV

r - 如何判断 R 是否仍在估计我的 SVM 模型或已崩溃?

python - 使用 sklearn 使用卡方核进行多标签预测

c# - Accord.Net 多类 SVM DynamicTimeWarping 异常

c++ - main 函数已在 ocaml asmrun 库中定义

c++ - 保持活跃的线程 (Qt)

c++ - 来自 Omnet++ 中其他项目的引用 header

c++ - 从任何基数到基数 10 c++ 的转换

C++可执行链接问题

c++ - GMock : error: cannot convert ‘cv::MatExpr’ to ‘bool’ in return