OpenCV 2.4.9 - Traincascade问题

时间:2016-05-28 12:43:58

标签: c++ opencv

我使用的是OSX 10.11。我是opencv的新手,我试图训练一个简单的(肯定是弱的)级联分类器来检测一个物体。我已经阅读了有关级联分类器的几个答案,帖子,指南,文档和教程,但我遇到了一些问题。我参考了这个指南:

guide

遵循opencv doc。现在我有8个jpg与我的兴趣对象和249个背景图像(我知道它是一个糟糕的数据集,但它只是一次尝试)。

当我调用opencv_createsamples时,我注意到guide的作者生成了1500个样本,我也这样做了。这意味着从我的8张正像中生成1500个样本?

perl bin/createsamples.pl positives.txt negatives.txt samples 1500 "opencv_createsamples -bgcolor 0 -bgthresh 0 -maxxangle 1.1 -maxyangle 1.1 maxzangle 0.5 -maxidev 40 -w 80 -h 40"

请注意,在示例文件夹中,我只有7个img * .jpg.vec文件。他们不会1500?我打电话之后:

g++ `pkg-config --libs --cflags opencv` -I. -o mergevec mergevec.cpp cvboost.cpp cvcommon.cpp cvsamples.cpp cvhaarclassifier.cpp cvhaartraining.cpp -lopencv_core -lopencv_calib3d -lopencv_imgproc -lopencv_highgui -lopencv_objdetect

我有一些错误,因为缺少" OpenCL" "&了AppKit#34; " QuartzCore" " QTKit" "可可&#34 ;.我可以在哪里取回这些?但是我试图继续并生成samples.vec文件。

find ./samples -name '*.vec' > samples.txt ./mergevec samples.txt samples.vec

最后,我用这段代码训练我的分类器:

opencv_traincascade -data classifier -vec samples.vec -bg negatives.txt -numStages 20 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 1000 -numNeg 249 -featureType LBP -w 80 -h 40 -precalcValBufSize 2048 -precalcIdxBufSize 4096

在阅读了一些帖子后,我选择了-numPos小于之前生成的1500个样本(但它们在哪里?)。当我开始训练时,那个人就陷入了这种情况:

terminal

1 个答案:

答案 0 :(得分:0)

当我尝试遵循相同(和其他)教程时学到了什么:

  • 是的,createsamples将单个积极变为多个。 * .vec文件在一个文件中包含许多文件。如果使用opencv_createsamples显示* .vec文件,则可以使用箭头键(我认为)翻阅它们。

  • 您需要mergevec程序,它将所有* .vec文件合并为一个,这是培训所需要的。我正在使用Windows,所以我不知道如何获取mac的东西。

  • opencv_traincascade的输出似乎表明它在samples.vec中找到了一千个图像。如果你没有mergevec,我假设你正在使用prebuild samples.vec文件。

  • “陷入困境”是什么意思?没有更多的输出,但没有崩溃?有时,培训需要数小时。