首先正样本与负样本的比例最好是1;2到1:3之间
其次在用haar做训练的时候出现的那个npos还有nneg参数的时候,后面的数字最好注意一下,npos的值取全体正样本的三分之一,比如我有400个样本我取了120,这样训练的时候就不会出现下面这个错误了。
Opencv Error: Assertion failed (elements_read==1) in icvGetHaarTraininData From vecCall Back, file....../......../......./opencv/apps/haartraining/cvhaartraining.cpp.line 1859
英文网站上的回答大概是这么个意思,也就是在第一层训练的时候已经用完了vec文件中所有的正样本,以至于在后续的样本训练中没有新的正样本可以加入使用了,导致出现了错误的现象。
那个vec文件中的正样本数目=npos+(nstages-1)*(1-minHitRate)*npos+s
S的意思是指在正样本中能够直接识别成背景的样本个数,如果npos=120的话,s的取值为个位数就行,不用太大。