使用OpenCV进行物体检测项目

3
我正在使用OpenCV制作一个物体识别软件,作为我的毕业项目。在研究了这个领域之后,我发现行动计划应该是这样的:
- 从许多图像中提取特征。 - 从提取的特征创建一个训练数据集。 - 标记数据集。 - 让机器从数据集中学习。 - 测试模型。
我从一张单独的图片开始。我能够使用OpenCV的SurfFeatureDetector类(在示例中给出的simple_matcher.cpp程序)从图片中提取特征。我使用以下代码将检测到的KeyPoints保存在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);

现在我陷入了困境。我不知道如何从这些特征中创建训练数据集?我的下一步应该是什么?或者说,我的行动计划正确吗?

提前感谢。


1
训练数据集的格式和内容取决于您想要识别的内容。请更清晰地指定您的目标。 - old-ufo
我想在图像中检测物体,可能有多个。因此,我想创建训练集,例如100张带球的图像,100张树的图像等等。 - R4chi7
1
首先,做这个 - LovaBill
2个回答

4
你可能需要执行以下步骤:
  1. 找到并使用一个特征检测和提取算法(如SIFT、SURF、ORB等)。

  2. 检测和提取特征。应该将从描述符提取器中提取的描述符存储在xml文件中。

  3. 将这些描述符添加到诸如bowtrainer之类的训练器中以创建一个字典。

  4. 训练你的分类器。

你可以在这里找到很多示例,并且如果你想在项目中实现类似的功能,可以观看这个视频。

我使用BOWTrainer创建了一个词汇表。但是现在,我不知道接下来该如何处理这个词汇表。请帮忙。 - R4chi7
2
现在,开始训练你的分类器。你可以查看这个例子。 - Darshan

3
首先,建议使用流行的数据集,例如来自这里。这样可以节省处理图片的时间,并提供了与最新技术成果相比较的可能性。
其次,任务并不容易。我建议您阅读与PASCAL VOC相关的论文
如果您想尝试第一步,请阅读词袋模型的相关内容,例如在SO用户@gillevi的博客中有简短而清晰的解释。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接