我正在尝试使用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

有人知道为什么吗?
先感谢您。

最佳答案

简短的答案是-对于所选的maxFalseAlarmnumStages参数,您没有足够的否定样本。因此,您有3种选择(从最佳选择开始):

  • 提供更多负面样本(恕我直言,这是最好的选择-这并不难,并且会为您提供最佳结果)
  • 降低maxFalseAlarm参数的值(您可以找到它here)
  • 减少阶段数

  • 如果我没记错(最好检查一下),则应该至少有(1-maxFalseAlarm)^(numStages-1)(其中'^'是幂,而不是xor)否定样本才能完成训练。

    关于c++ - OPENCV培训级联 “out of range”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30560191/

    10-09 13:34