diff --git a/modules/imgproc/src/histogram.cpp b/modules/imgproc/src/histogram.cpp index 837c5e3778..5f60ff41e0 100644 --- a/modules/imgproc/src/histogram.cpp +++ b/modules/imgproc/src/histogram.cpp @@ -613,10 +613,15 @@ void calcHist( const Mat* images, int nimages, const int* channels, const double* _uniranges = uniform ? &uniranges[0] : 0; int depth = images[0].depth(); + if( depth == CV_8U ) calcHist_8u(ptrs, deltas, imsize, ihist, dims, ranges, _uniranges, uniform ); + else if( depth == CV_16U ) + calcHist_(ptrs, deltas, imsize, ihist, dims, ranges, _uniranges, uniform ); else if( depth == CV_32F ) calcHist_(ptrs, deltas, imsize, ihist, dims, ranges, _uniranges, uniform ); + else + CV_Error(CV_StsUnsupportedFormat, ""); ihist.convertTo(hist, CV_32F); } @@ -780,8 +785,12 @@ static void calcHist( const Mat* images, int nimages, const int* channels, int depth = images[0].depth(); if( depth == CV_8U ) calcSparseHist_8u(ptrs, deltas, imsize, hist, dims, ranges, _uniranges, uniform ); + else if( depth == CV_16U ) + calcSparseHist_(ptrs, deltas, imsize, hist, dims, ranges, _uniranges, uniform ); else if( depth == CV_32F ) calcSparseHist_(ptrs, deltas, imsize, hist, dims, ranges, _uniranges, uniform ); + else + CV_Error(CV_StsUnsupportedFormat, ""); if( !keepInt ) { @@ -1114,8 +1123,12 @@ void calcBackProject( const Mat* images, int nimages, const int* channels, int depth = images[0].depth(); if( depth == CV_8U ) calcBackProj_8u(ptrs, deltas, imsize, hist, dims, ranges, _uniranges, (float)scale, uniform); + else if( depth == CV_16U ) + calcBackProj_(ptrs, deltas, imsize, hist, dims, ranges, _uniranges, (float)scale, uniform ); else if( depth == CV_32F ) calcBackProj_(ptrs, deltas, imsize, hist, dims, ranges, _uniranges, (float)scale, uniform ); + else + CV_Error(CV_StsUnsupportedFormat, ""); } @@ -1269,9 +1282,14 @@ void calcBackProject( const Mat* images, int nimages, const int* channels, if( depth == CV_8U ) calcSparseBackProj_8u(ptrs, deltas, imsize, hist, dims, ranges, _uniranges, (float)scale, uniform); + else if( depth == CV_16U ) + calcSparseBackProj_(ptrs, deltas, imsize, hist, dims, ranges, + _uniranges, (float)scale, uniform ); else if( depth == CV_32F ) calcSparseBackProj_(ptrs, deltas, imsize, hist, dims, ranges, _uniranges, (float)scale, uniform ); + else + CV_Error(CV_StsUnsupportedFormat, ""); }