是什么原因导致在获取阴性样本时opencv_traincascade.exe崩溃?

2019年9月8日 22点热度 0条评论

我的目标是训练级联以识别骰子的特定面孔。

我有106个未生成的样本由opencv_createsamples转换为vec文件(名为dice1.vec),参数为-w 32 -h32。另外,我有一个文本文件negTxt1.txt,大约420行引用其他骰子的面孔(32x32 .png文件),大约600行引用其他任意的640x480大小的bg文件。

我试图在内存为16GB的Windows计算机上使用以下参数运行opencv_traincacade.exe:tools\opencv_traincascade.exe -data positives/testclassifier -vec positives/1/dice.vec -bg positives/negTxt1.txt -numStages 20 -numPos 100 -numNeg 1000 -precalcValBufSize 2048 -precalcIdxBufSize 2048 -acceptanceRatioBreakValue .0001 -w 32 -h 32 -mode ALL
但是,在消耗负样本时,程序将在尝试消耗负样本时崩溃,并且崩溃前的最后一行是NEG current samples: 427。然后出现错误窗口“opencv_traincascade停止工作...”,没有错误消息。

我已经在SO和此处(即herehere)查看了建议,但建议的修复似乎没有帮助。尝试将-numPos减小到80不能防止崩溃,并且缓冲区大小参数足够大。尝试将-numNeg减小到<427在第一阶段是可行的,但在下一阶段会崩溃,在另一个训练的同一点(当它说NEG current samples: ...时)会崩溃。

我可以采取哪些步骤来防止此崩溃并成功创建分类器?

解决方案如下:

看来,更新和使用OpenCV 3.1.0的工具和库(来自其网站)可以解决此问题。