我试图通过使用OpenCV 3.0 traincascade来训练我自己的探测器。 我有82个阳性和188个阴性样本,并且有以下
opencv_traincascade -data data -vec signals.vec -bg negative.txt -numPos 82 -numNeg 188 -numStages 20 -w 50 -h 50 -featureType LBP
我能够达到第8阶段。在第9阶段我有以下错误
===== TRAINING 9-stage =====
<BEGIN
POS count : consumed 82 : 82
NEG cterminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::substr
Aborted (core dumped)149
有人知道为什么吗? 提前谢谢。
答案 0 :(得分:1)
简短的回答是 - 您没有为选定的maxFalseAlarm
和numStages
参数提供足够的负样本。所以你有3个选择(从最好的开始):
maxFalseAlarm
参数的值(您可以找到它here)如果我记得正确(更好地检查它......)你应该至少有(1-maxFalseAlarm)^(numStages-1)
(其中'^'是力量,而不是xor)负样品来完成训练。