如何培养和使用文字包预测?(How to train and predict using bag o

2019-08-03 11:49发布

我从各个角度一辆汽车的图像的文件夹。 我想的话的方法来训练系统中认识到汽车上使用的袋子。 一旦训练完成后,我想,如果是汽车的图像被赋予它应该能够识别它。

我一直在努力学习OpenCV的船头功能,以使这项工作,并已付出了水平,我不知道现在该做什么和一些指导,将不胜感激。

这里是我的代码,我用来做文字的包:

Ptr<FeatureDetector> features = FeatureDetector::create("SIFT");
    Ptr<DescriptorExtractor> descriptors = DescriptorExtractor::create("SIFT");
    Ptr<DescriptorMatcher> matcher = DescriptorMatcher::create("FlannBased");

    //defining terms for bowkmeans trainer
    TermCriteria tc(MAX_ITER + EPS, 10, 0.001);
    int dictionarySize = 1000;
    int retries = 1;
    int flags = KMEANS_PP_CENTERS;
    BOWKMeansTrainer bowTrainer(dictionarySize, tc, retries, flags);

    BOWImgDescriptorExtractor bowDE(descriptors, matcher);

    //training data now
    Mat features;
    Mat img = imread("c:\\1.jpg", 0);
    Mat img2 = imread("c:\\2.jpg", 0);
    vector<KeyPoint> keypoints, keypoints2;
    features->detect(img, keypoints);
    features->detect(img2,keypoints2);
    descriptor->compute(img, keypoints, features);
    Mat features2;
    descripto->compute(img2, keypoints2, features2);
    bowTrainer.add(features);
    bowTrainer.add(features2);

    Mat dictionary = bowTrainer.cluster();
    bowDE.setVocabulary(dictionary);

这是所有基于上BOW文件 。

我认为在这个阶段,我的系统培训。 和下一个步骤是预测。

这就是我不知道该怎么办。 如果我使用SVMNormalBayesClassifier它们都使用术语火车和预测。

如何预测和火车后呢? 任何指导,将不胜感激。 如何分类的培训连接到我的`bowDE``功能?

Answer 1:

下一步是提取字描述符的实际袋。 您可以使用做到这一点compute从BOWImgDescriptorExtractor功能。 就像是

 bowDE.compute(img, keypoints, bow_descriptor);

使用此功能,创建描述符,你再收集成作为输入的分类功能的矩阵。 也许这个教程可以指导你一点点。

我想提的另一件事是,分类你通常需要至少2班。 所以,你还需要不包含汽车训练分类一些图像。



文章来源: How to train and predict using bag of words?