diff --git a/apps/traincascade/haarfeatures.cpp b/apps/traincascade/haarfeatures.cpp index a58fb45c901f11bfd5df9d28b5e66cb3cc7231b7..f2d18229e8b4d0533c8223f5108b8c8ae6ae3786 100644 --- a/apps/traincascade/haarfeatures.cpp +++ b/apps/traincascade/haarfeatures.cpp @@ -100,9 +100,14 @@ void CvHaarEvaluator::setImage(const Mat& img, uchar clsLabel, int idx) CV_DbgAssert( !sum.empty() && !tilted.empty() && !normfactor.empty() ); CvFeatureEvaluator::setImage( img, clsLabel, idx); Mat innSum(winSize.height + 1, winSize.width + 1, sum.type(), sum.ptr((int)idx)); - Mat innTilted(winSize.height + 1, winSize.width + 1, tilted.type(), tilted.ptr((int)idx)); Mat innSqSum; - integral(img, innSum, innSqSum, innTilted); + if (((const CvHaarFeatureParams*)featureParams)->mode == CvHaarFeatureParams::ALL) + { + Mat innTilted(winSize.height + 1, winSize.width + 1, tilted.type(), tilted.ptr((int)idx)); + integral(img, innSum, innSqSum, innTilted); + } + else + integral(img, innSum, innSqSum); normfactor.ptr(0)[idx] = calcNormFactor( innSum, innSqSum ); }