Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Haar Classifier Assertion error

├── classifier
├── createsamples.pl
├── mergevec.py
├── neg
│   ├── download1.jpg
│   ├── negative images
├── negatives.txt
├── pos
│   ├── download1.jpg
│   ├── positive images
├── positives.txt
├── samples
│   ├── download1.jpg.vec
│   ├── download3.jpg.vec
│   └── images.jpg.vec
└── sample.vec

This is the file structure for my project.
Since this is for learning, I have used 4 positive images and 10 negative images.

perl createsamples.pl positives.txt negatives.txt samples 4 "opencv_createsamples -bgcolor 0 -bgthresh 0 -maxxangle 1.1 -maxyangle 1.1 maxzangle 0.5 -maxidev 40 -w 40 -h 30"

createsamples.pl source

This is the perl script to generate sample vec files.

I merge them using this mergevec.py file.

I read in this tutorial that -w and -h should be in the ratio of the positive images.
My positive images are 480 X 360.

Thus my perl script has -w 40 -h 30 as args.

opencv_traincascade -data classifier -vec sample.vec -bg negatives.txt -numStages 3 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 4 numNeg10 -w 40 -h 30 -mode ALL -precalcValBufSize 1024-precalcIdxBufSize 1024

On running this , I get

===== TRAINING 0-stage =====
OpenCV Error: Assertion failed (_img.rows * _img.cols == vecSize) in get, file /build/opencv-SviWsf/opencv- 2.4.9.1+dfsg/apps/traincascade/imagestorage.cpp, line 157  
terminate called after throwing an instance of 'cv::Exception'   what():  /build/opencv-SviWsf/opencv-  2.4.9.1+dfsg/apps/traincascade/imagestorage.cpp:157: error: (-215) _img.rows     * _img.cols == vecSize in function get

Aborted (core dumped)

I get this ouput on running opencv_traincascade

PARAMETERS:
cascadeDirName: classifier
vecFileName: sample.vec
bgFileName: negatives.txt
numPos: 4
numNeg: 1000
numStages: 3
precalcValBufSize[Mb] : 256
precalcIdxBufSize[Mb] : 256
stageType: BOOST
featureType: HAAR
sampleWidth: 24
sampleHeight: 24
boostType: GAB
minHitRate: 0.999
maxFalseAlarmRate: 0.5
weightTrimRate: 0.95
maxDepth: 1
maxWeakCount: 100
mode: BASIC

Why does it show 24 in sampleWidth and sampleHeight and what should I do to successfully train.

Thank you.