Erro “Conjunto de dados de trem para estágio temporário não pode ser preenchido.” Enquanto estiver usando a ferramenta traincascade do OpenCV
Eu estou construindo a ferramenta opencv_traincascade.exe do código-fonte (OpenCV 2.4.0) usando o vs2010 no windows 7. Eu quero treinar um classificador LBP, então eu estou usando opencv_traincascade.exe com os seguintes argumentos
-data D: \ OpenCV \ Classificadores \ lbpclassifier1 \ temp \ data -vec D: \ OpenCV \ Classificadores \ lbpclassifier1 \ temp \ samples.vec -bg D: \ OpenCV \ Classificadores \ lbpclassifier1 \ temp \ negative \ infofile.txt -numPos 40 -numNeg 40 -precalcIdxBufSize 500 -precalcValBufSize 500 -stageType BOOST -featureType LBP -w 24 -h 24
A mensagem de erro que recebo é:
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.
Esta pergunta foi feita antes:Erro ao usar a cascata opencv_train e a solução sugerida ali Fazer o número de amostras positivas e negativas iguais não ajuda neste caso.
Eu pensei que o erro pode estar relacionado a este bug:http://code.opencv.org/issues/1834 Então, eu baixei a última versão do imagestorage.cpp daquela página e recompus a ferramenta opencv_traincascades. Além disso, o número total de amostras no arquivo .vec é 45. Assim, como sugerido nesteComente Eu mudei o argumento numPos para 2, para que eu não fique sem amostras no arquivo .vec. O número de amostras no arquivo .vec é 45.
Qualquer ajuda é muito apreciada. Obrigado.