您好我一直在努力训练有功能的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);
答案 0 :(得分:0)
我强烈建议您在OpenCV中使用python,这将为您节省大量时间。在python中,这将只有10行代码。
您可以参考此link获取ORB。一旦获得功能,您就可以使用scikit-learn svm来训练SVM分类器。