正确创建分类器。 (haar cascade)

时间:2017-05-19 21:27:01

标签: java opencv cascade

我试图为螺丝识别创建我的haar级联。我是在opencv320文件夹的帮助下创建的。我使用700正面和1400负面图像。创作在第16阶段之前结束:"已达到所需的接受率限制。"我尝试使用级联,但螺丝无法识别。 用于创建samples.vec文件的命令:

C:\opencv320\opencv\build\x64\vc14\bin>opencv_createsamples.exe -info D:\TrainingSample\Good.dat -vec D:\TrainingSample\samples.vec -w 40 -h 20 -num 702

创建分类器的命令:

C:\opencv320\opencv\build\x64\vc14\bin>opencv_traincascade.exe -data haarcascade -vec samples.vec -bg Bad.dat -numStages 16 -minhitrate 0.999 -maxFalseAlarmRate 0.4 -numPos 561 -numNeg 1403 -w 40 -h 20 -mode ALL -precalcValBufSize 2048 -precalcIdxBufSize 2048

使用级联的代码:

MyApp.screw_cascade.detectMultiScale(gray, screw, 1.1, 2, 0, new Size(40, 20), new Size());
                        for (Rect rect : screw.toArray()) {
                            //Core.rectangle(frame, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
                            Point center = new Point(rect.x + rect.width * 0.5, rect.y + rect.height * 0.5);
                            Core.ellipse(frame, center, new Size(rect.width * 0.5, rect.height * 0.5), 0, 0, 360, new Scalar(0, 255, 0), 4, 8, 0);
                            Core.putText(frame, "Screw", new Point(rect.x, rect.y), Core.FONT_HERSHEY_PLAIN, 1.0, new Scalar(0, 255, 255));
                        }

我做错了什么?你能告诉一些可以帮助我的事吗?

我用于训练的所有命令都是在开头指出的。此外,我将用于培训的所有文件(包括所有照片)上传到Google drive。 为了训练,我拍摄了没有背景的物体图像(* .png),将它们叠加在背景上,用物体剪切了场地,物体在图像上的位置记录在文件Good.dat中。

几天尝试的结果:可以创建一个用于检测几乎没有间隙的坚果的级联。为了创造,我们使用40个不同角度的坚果图像而没有背景,这些图像叠加在每个背景的片段上(25张背景图片)。总计2100阳性和4000+阴性。要创建文件,请使用以下命令:

opencv_createsamples.exe -info D:\TrainingSample\Good.dat -vec D:\TrainingSample\samples.vec -maxxangle 1.1 -maxyangle 1.1 -maxzangle 0.5 -w 20 -h 20 -num 2099

要创建级联,请使用以下命令:

opencv_traincascade.exe -data haarcascade -vec samples.vec -bg Bad.dat -numStages 12 -minhitrate 0.999 -maxFalseAlarmRate 0.3 -numPos 1680 -numNeg 4049 -w 20 -h 20 -mode ALL -precalcValBufSize 2048 -precalcIdxBufSize 2048

培训需要10个小时。

0 个答案:

没有答案