OpenCV错误:参数错误(无法获取新的正样本

时间:2018-11-12 00:53:09

标签: opencv haar-classifier

我正在尝试训练自己的OpenCV Haar分类器进行杯检测。 我有100个包含杯子的图像和400个不包含杯子的图像,所以,

正面图片数量= 100

不。负片数量= 400

起初,我为他们两个创建了dat,

find ./Negative_Images -name '*.jpg' >negatives.dat
find ./Positive_Images -name '*.jpg' >positives.dat

接下来,我运行以下命令来生成样本(我将样本100的值放入,因为我的正像中没有一个是100。对吗?)

perl createtrainsamples.pl positives.dat negatives.dat samples 100 "opencv_createsamples  -bgcolor 0 -bgthresh 0 -maxxangle 1.1 -maxyangle 1.1 maxzangle 0.5 -maxidev 40 -w 80 -h 60"

现在在“样本”文件夹中创建了100个样本(* .jpg.vec)。接下来,我运行以下命令来生成samples.vac

python ./tools/mergevec.py -v samples/ -o samples.vec
mrnugget

中找到的

mergevec.py

下一个命令现在是“ opencv_haartraining”,

opencv_traincascade -data classifier -vec samples.vec -bg negatives.dat -precalcValBufSize 2500 -precalcIdxBufSize 2500 -numPos 100 -numNeg 400 -numStages 15 -minhitrate 0.99 -maxfalsealarm 0.5 -w 80 -h 60

我收到错误错误:无法获取新的阳性样本

有人通过numPos = noOfPositiveImages * 0.9解决了它,但是对我来说不起作用

从不同的来源,我找到了一个公式来计算numPose的值。

vec文件必须包含> =(numPose +(numStages-1)*(1-minHitRate)* numPose)+ S

到目前为止,对我而言

vec文件必须包含= 100(因为我有100个正图像,并从那100个样本中创建了该图像)

numStage = 4(或者根据需要,它可以是任何其他值)

minHitRate = 0.99

S =来自vec文件的样本计数。(在其他地方说,来自vec文件的所有跳过样本的计数(对于所有阶段))

我不明白,我应该为S赋予什么价值?

有人可以举例说明这个公式吗?我应该在命令中输入什么值来解决此错误?

0 个答案:

没有答案