OpenCV的对象检测项目
Object Detection project with OpenCV
我正在尝试使用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);
现在我陷入了困境。我不明白如何根据这些功能创建训练数据集?我的下一步应该是什么?或者,我的行动计划正确吗?
提前谢谢。
您可能需要执行以下步骤。
-
找出并专注于您想要使用的特征检测和提取算法(SIFT、SURF、ORB,还有更多)。
-
检测和提取特征。您应该将从描述符提取器提取的描述符存储在xml文件中。
-
将这些描述符添加到训练器(如bowtrainer)中以创建字典。
-
训练你的分类器
你可以在这里找到很多例子,如果你想在你的项目中实现类似的东西,你可以观看这个视频。
首先,使用流行的数据集会更容易,例如,从这里开始。它可以让你不用花时间在图像上,并可以将你的结果与最先进的技术进行比较。
其次,这不是一项容易的任务。我建议你阅读与PASCAL VOC相关的论文。
如果你想做第一次尝试,请阅读单词袋模型,例如,它在SO用户@gillevi的博客中非常简短和漂亮地解释了该做什么。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法在 CLion 中构建 C++ 项目
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 检测 Visual Studio 项目的属性中是否启用了英特尔 MKL
- 如何将此项目更改为 OpenCV 实时人脸检测应用程序?
- Visual Studio 项目设置,用于检测英特尔跟踪分析器
- 有没有更好的方法来检测向量中一个项目的多次出现?
- 检测到来自同一 Visual Studio 2015 项目的源文件的对象文件的'RuntimeLibrary'不匹配
- Qt-检测QListView中的项目信息更改
- 如何为大型项目制作一个简单的工具来检测Linux中的双倍空闲或内存溢出
- OpenCV的对象检测项目
- 在大型C++项目中,我应该如何检测编译时间的瓶颈
- 如何在使用JNI的C++/Java项目中使用CRT中的工具检测内存泄漏
- 用于混合模式项目的内存泄漏检测:托管、非托管和本机
- 反病毒软件一直将我的项目检测为病毒
- 在交互式楼层项目中匹配顶视图人体检测与楼层投影
- 内存计数器 - 碰撞检测项目
- 视觉检漏仪不适用于 DLL 项目的检测
- 旧版 C/C++ 项目中的死代码检测