我试图用haar_cascade训练一些分支标识。我所做的是,我已经拍摄了2500张500 x 500的平方图片来填充opencv_createsamples
的样本。然后我将它们生成为:
opencv_createsamples -info' logo.info' -vec' ../ logo.vec' -bg' ../ Negatives / bg.txt' -w 24 -h 24 -num 2500
在我的logo.info
中,我得到了与每张图片的相对路径相对应的行,其中1 0 0 500 500
含义为"其间有一个对象(0, 0)和(500,500)"
然后我训练级联为:
opencv_traincascade -data' cascade /' -vec' ../ logo.vec' -bg' ../ Negatives / bg.txt' -numPos 2500 -numNeg 3019 -numStages 25 -featureType LBP -w 24 -h 24
使用以下参数:
参数:
cascadeDirName:cascade /
vecFileName:../ logo.vec
bgFileName:../ Negatives / bg.txt
numPos:2500
numNeg:3019
numStages:25
precalcValBufSize [Mb]:256
precalcIdxBufSize [Mb]:256
stageType:BOOST
featureType:LBP
sampleWidth:24
sampleHeight:24
boostType:GAB
minHitRate:0.995
maxFalseAlarmRate:0.5
weightTrimRate:0.95
maxDepth:1
maxWeakCount:100
我有两种错误:
...
如果您的图像数与-num
参数之间没有显着差异,则会发生此错误。所以,让我们试着减少100 !!
好吧,当我调整参数不要从数组中输出时,我得到的输出类型与图像相同,但是我收到了这个错误:
OpenCV错误:写入中的断言失败(tempNode-> gt;左),文件/tmp/buildd/opencv-2.3.1/modules/traincascade/boost.cpp,第628行 在抛出' cv :: Exception'的实例后终止调用 what():/ tmp/buildd/opencv-2.3.1/modules/traincascade/boost.cpp:628:错误:(-215)tempNode->函数写入
中止
我试过了:
-mode
参数。我必须做的是训练必须使用LBP(不是HAAR)。有人有任何线索吗?
提前谢谢。
答案 0 :(得分:0)
卸载和重建OpenCV解决了这个问题。