opencv - How to force detectMultiScale search on 1:1 scale? -
how force opencv cascadeclassifier::detectmultiscale function search on 1:1 scale?
how many scales used default?
upd: found relate code: https://github.com/itseez/opencv/blob/cc92cd07e8d6a54dfd57d5f74c3d4e05b1d956af/modules/objdetect/src/cascadedetect.cpp
for( double factor = 1; ; factor *= scalefactor ) { size originalwindowsize = getoriginalwindowsize(); size windowsize( cvround(originalwindowsize.width*factor), cvround(originalwindowsize.height*factor) ); if( windowsize.width > maxobjectsize.width || windowsize.height > maxobjectsize.height || windowsize.width > imgsz.width || windowsize.height > imgsz.height ) break; if( windowsize.width < minobjectsize.width || windowsize.height < minobjectsize.height ) continue; scales.push_back((float)factor); }
number of scales used in cascadeclassifier::detectmultiscale depends on image size, original trained window size, minobjectsize, maxobjectsize , scalefactor parameters. loops through scales starting 1 in increments of scalefactor until 1 of conditions:
- current window size larger image size
- current window size larger maxobjectsize
so there several possibilities reduce number of scales used in `cascadeclassifier::detectmultiscale:
- set
maxobjectsizeparameter equal original trained size. guaranties cascade use 1:1 scale. - set
scalefactorparameter extremely large value (1000 example). next scale after 1 not used since window size larger image size. it's dirty hack me.
please sure tune minneighbors parameter. if use 1 scale few candidates, detect need must decrease parameter.
Comments
Post a Comment