1

我目前正在检测给定图像中的多个水果。例如,给定的图像可以有香蕉(如黄色、红色和绿色)、芒果、橙子等水果。我能够使用.一次只创建一张图像的训练集opencv_createsamples

示例代码:

C:\opencv\build\x64\vc14\bin\opencv_createsamples.exe -img redbanana.jpg -bg bg.txt -info info/info.lst -pngoutput info -maxxangle 0.5 -maxyangle 0.5 -maxzangle 0.5 -num 100

同样,我已经完成了大约 5 个水果,它为每个水果创建了单独的 vec 文件。很难为每种水果创造。是否有可能使用单个 vec 文件作为输出从多个图像创建训练集?

是否有任何其他方法可以检测给定图像中的多个水果?

4

2 回答 2

1

如果您想用相同水果的不同变体来训练分类器,您可以从多张图像中生成训练样本,如此处所述

但是,请注意,Haar 分类器以灰度工作,很难保证区分红色和黄色香蕉等对象。

如果你想在一个分类器中有多个类,我推荐YOLO(You Only Look Once)或SSD(Single Shot multibox Detector)。

于 2017-09-01T03:59:49.787 回答
1

haar 分类器非常适合快速检测一类外观相似的对象,如 opencv 文档 http://docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html 中所述。例如,opencv 存储库(https://github.com/opencv/opencv)有一个分类器列表(https://github.com/opencv/opencv/tree/master/data/haarcascades)为特定类训练对象。

除非要检测的对象是相似的(例如具有不同特征的面孔或不同品牌和型号的汽车),否则对于每个水果(例如香蕉、橙子、芒果等)使用分类器会更有效。

要创建基于多个正样本图像的训练向量(以及对于 haar 分类器训练的任何其他方面,我会推荐此处的步骤- 步骤 5 和 6 - 以及http://coding-robin.de/中涵盖的详细信息2013/07/22/train-your-own-opencv-haar-classifier.html . 在您的情况下,正面图像应包括所有类型的香蕉、橙子、芒果等,包括颜色变化等。

于 2017-08-31T16:42:29.033 回答