我正在使用 Windows 7 上的 vs2010 从源代码(OpenCV 2.4.0)构建 opencv_traincascade.exe 工具。我想训练 LBP 分类器,所以我使用带有以下参数的 opencv_traincascade.exe
-data D:\OpenCV\Classifiers\lbpclassifier1\temp\data -vec D:\OpenCV\Classifiers\lbpclassifier1\temp\samples.vec -bg D:\OpenCV\Classifiers\lbpclassifier1\temp\negative\infofile.txt -numPos 40 -numNeg 40 -precalcIdxBufSize 500 -precalcValBufSize 500 -stageType BOOST -featureType LBP -w 24 -h 24
我得到的错误信息是:
PARAMETERS:
cascadeDirName: D:\OpenCV\Classifiers\lbpclassifier1\temp\data
vecFileName: D:\OpenCV\Classifiers\lbpclassifier1\temp\samples.vec
bgFileName: D:\OpenCV\Classifiers\lbpclassifier1\temp\negative\infofile.txt
numPos: 2
numNeg: 40
numStages: 20
precalcValBufSize[Mb] : 500
precalcIdxBufSize[Mb] : 500
stageType: BOOST
featureType: LBP
sampleWidth: 24
sampleHeight: 24
boostType: GAB
minHitRate: 0.995
maxFalseAlarmRate: 0.5
weightTrimRate: 0.95
maxDepth: 1
maxWeakCount: 100
===== TRAINING 0-stage =====
<BEGIN
POS count : consumed 2 : 2
Train dataset for temp stage can not be filled. Branch training terminated.
之前有人问过这个问题:使用 opencv_train 级联时出错 ,解决方案建议在那里。在这种情况下,使正样本和负样本的数量相等并没有帮助。
我认为该错误可能与此错误有关:http : //code.opencv.org/issues/1834 因此,我从该页面下载了最新版本的 imagestorage.cpp 并重建了 opencv_traincascades 工具。此外,.vec 文件中的样本总数为 45。因此,正如此评论中所建议的,我已将 numPos 参数更改为 2,这样我就不会用完 .vec 文件中的样本。.vec 文件中的样本数为 45。
任何帮助深表感谢。谢谢。