当前位置: 代码迷 >> 综合 >> opencv:Can not get new positive sample
  详细解决方案

opencv:Can not get new positive sample

热度:41   发布时间:2024-01-04 03:58:47.0

运行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.观察第一层训练情况,第一层训练结束不报错后面就没问题了;

  相关解决方案