我在训练级联分类器时遇到了问题。
首先,我使用opencv_createsamples创建示例:
./opencv_createsamples -vec test.vec -img ./positive/speed_50.jpeg -bg /home/boris/src/cascade/neg.txt -num 50 -w 150 -h 150
效果很好,输出如下:
Info file name: (NULL)
Img file name: ./positive/speed_50.jpeg
Vec file name: test.vec
BG file name: /home/boris/src/cascade/neg.txt
Num: 50
BG color: 0
BG threshold: 80
Invert: FALSE
Max intensity deviation: 40
Max x angle: 1.1
Max y angle: 1.1
Max z angle: 0.5
Show samples: FALSE
Width: 150
Height: 150
Create training samples from single image applying distortions...
Done
然后是级联教练:
./opencv_traincascade -data /home/boris/src/cascade -vec ./test.vec -bg ./neg.txt -numPos 50 -numNeg 2 -w 150 -h 150
我收到以下错误:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Emergency stop (core dumped)
neg.txt文件:
img/img1.jpeg
img/img2.jpeg
这两个文件都存在于img目录中。
OpenCV版本是2.4.2,OS是Ubuntu 12.04。
感谢您的帮助。
答案 0 :(得分:1)
您需要将w和h设置为与生成的样本相同的大小,在您的情况下为150。对于任何样本量太大我都有同样的问题。它适用于48x48而不适用于96x96。如果你用更大的样本解决问题,请告诉我。
此致