运行opencv_traincascade .exe
训练完第一层出现错误:
OpenCV: terminate handler is called! The last OpenCV error is:
OpenCV(3.4.6) Error: Bad argument (> Can not get new positive sample.
The most possible reason is insufficient count of samples in given vec-file.
这个问题主要是numPos的值设置的不对,
很多资料都简单的把numPos解释为正样本,我也一直是这样认为的,导致numPos的值和创建vec样本的num数完全一样;
这是错误的,有一个公式可以来限定numPos的取值:
vec-file number >= (numPos + (numStages-1) * (1 – minHitRate) * numPos) + S
vec-file number:创建vec文件的正样本的num
S: 表示生成vec文件时负样本总数?
(where S is a count of samples from vec-file that can be recognized as background right away)
实测下来,有几点肯定:
1.确实是numPos的问题;
2.numPos应小于设置的和生成vec文件的num数;修改的话可参考上面减小NumPos的值
3.观察第一层训练情况,第一层训练结束不报错后面就没问题了;