我想培养出哈尔状分类器使用3340个正面形象和1224个负面形象在OpenCV的行人。 (在一个.txt文件我保持负象名称,即底片(1).bmp和在txt文件我保持阳性,即图片(1)的.bmp 1 0 0 64 128实际上正例已裁剪的图像行人,所以我只需要指定每幅图像阳性样品)。
在训练过程中的某一点停止,并说:
“opencv的错误:断言失败(elements_read == 1)在未知功能,文件c:\路径\ cvhaartraining.cpp,线1858”
任何想法是什么原因造成的?
这个问题被回答了在OpenCV的DevZone网站的实用工具创世在2012年6月。
引述玛丽亚:
问题是,您的VEC文件具有完全相同的样本数着你在命令行-numPos 979 Training应用程序中使用的所有样品从VEC文件训练0级传递,并且不能在未来获得新的阳性样本阶段的训练,因为VEC文件已经结束。 traincascade的错误是,它在这种情况下,断言(),但它抛出与错误信息的异常的用户。 它被固定在r8913。 -numPose是一个样本计数被用于训练各个阶段。 一些已经使用的样本可以由每个前一级(即识别为背景)进行过滤,但不超过(1 - minHitRate)* numPose每个阶段。 所以VEC-文件必须包含> =(numPose +(numStages-1)*(1 - minHitRate)* numPose)+ S,其中S是从VEC文件的样品可以马上确认为背景的计数。 我希望它可以帮助你创建正确大小的VEC文件,并选择正确的numPos值。
它为我工作。 我也有同样的问题,我是继上HAAR培训教程著名 ,但想尝试-npos 7000 -nneg 2973较新的训练工具
所以我做了以下Calcs(计算):
VEC-文件必须包含> =(numPos +(numStages-1)*(1 - minHitRate)* numPos)+ S
7000> =(numPos +(20-1)*(1-0999)* numPos)+ 2973
(7000 - 2973)/(1 + 19 * 0001)> = numPos
numPos <= 4027 / 1.019
numPos <= 3951 ~~ 3950
与使用:
-npos 3950 -nneg 2973
有用。 我还注意到,其他人也有过成功与减少numPos: 这里