C++ 基于OpenCV的目标检测项目
我正在尝试使用C++ 基于OpenCV的目标检测项目,c++,opencv,computer-vision,C++,Opencv,Computer Vision,我正在尝试使用OpenCV为我的最后一年项目制作一个对象识别软件。在对这个领域进行了大量研究之后,我发现行动计划应该是这样的: 从大量图像中提取特征 从提取的特征创建训练数据集 为数据集添加标签 使机器从数据集中学习 测试模型 我从一张图片开始。我能够使用OpenCV的SurfFeatureDetector类(simple\u matcher.cpp示例中给出的程序)从图像中提取特征。我使用以下代码将检测到的关键点保存在XML文件中: SurfFeatureDetector detector
OpenCV
为我的最后一年项目制作一个对象识别软件。在对这个领域进行了大量研究之后,我发现行动计划应该是这样的:
- 从大量图像中提取特征
- 从提取的特征创建训练数据集
- 为数据集添加标签
- 使机器从数据集中学习
- 测试模型
SurfFeatureDetector
类(simple\u matcher.cpp
示例中给出的程序)从图像中提取特征。我使用以下代码将检测到的关键点
保存在XML文件中:
SurfFeatureDetector detector(400);
vector<KeyPoint> keypoints1, keypoints2;
detector.detect(img1, keypoints1);
detector.detect(img2, keypoints2);
FileStorage fs("test.xml", FileStorage::WRITE);
write(fs, "data", keypoints1);
surfeaturedetector检测器(400);
向量关键点1,关键点2;
检测器。检测(img1,关键点1);
检测器。检测(img2,关键点2);
FileStorage fs(“test.xml”,FileStorage::WRITE);
写入(fs,“数据”,关键点1);
现在我被困在这一点上。我无法理解如何从这些功能创建培训数据集?我下一步该怎么做?或者,我的行动计划正确吗
提前感谢。首先,使用流行的数据集会更容易,例如,从。它可以让你不用花时间在图像上,并且可以将你的结果与最先进的技术进行比较 第二,这不是一项容易的任务。我建议你读书
如果你想做第一次尝试,请阅读关于bag of words模型的内容,例如,它非常简短,并且很好地解释了如何使用该模型 您可能需要执行以下步骤
如果您想在项目中实现类似的功能,您可以找到许多示例,也可以观看视频。培训数据集的格式和内容取决于您想要识别的内容。请更明确地指定您的目标。我想检测图像中的对象,其数量可能是多个。因此,我想创建一个训练集,例如,100个带球的图像,100个带树的图像,等等。对于初学者,可以。我使用BOWTrainer创建了一个词汇表。但现在,我不明白下一步该如何处理这些词汇。请帮忙。现在,开始训练你的分类器。你们可以看看这个例子