Haar级联训练时bad_alloc()错误

use*_*255 1 c++ opencv image-processing haar-classifier

我们一直在困扰哈尔级联训练的问题上呆了一周。实际上,我们正在按照本教程http://coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html创建级联xml文件。但是最后一条命令

opencv_traincascade -data classifier -vec samples.vec -bg negatives.txt
-numStages 20 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 45
-numNeg 45 -w 90 -h 100 -mode ALL -precalcValBufSize 1024
-precalcIdxBufSize 1024
Run Code Online (Sandbox Code Playgroud)

我们得到一个错误:

terminate called after throwing an instance of 'std::bad_alloc'
what(): std:: bad_alloc
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)

图像规格为:45张正片和45张负片(尺寸均为90 X 100)。我确保samples.vec存在于同一文件夹中,并且还尝试将2048用于precalcValBufSize参数。请帮助我们!

Dim*_*ima 5

您的内存已用完。您有几种选择:

  • 使用具有更多内存的64位计算机
  • 使用较小尺寸的正面训练图像。通常为24x24或32x32。64x64被认为是大尺寸。
  • 使用LBP或HOG功能代替Haar。Haar功能比其他功能占用更多数量级的内存。

顺便说一下,您的负片图像不应与正片图像相同。负片应该是包含通常与您感兴趣的对象相关的背景的大场景。opencv_traincascade自动扫描它们以寻找有用的阴性样品。