size_t minidx = 0, maxidx = 0;
int iminval = INT_MAX, imaxval = INT_MIN;
- float fminval = FLT_MAX, fmaxval = -FLT_MAX;
- double dminval = DBL_MAX, dmaxval = -DBL_MAX;
+ float fminval = std::numeric_limits<float>::infinity(), fmaxval = -fminval;
+ double dminval = std::numeric_limits<double>::infinity(), dmaxval = -dminval;
size_t startidx = 1;
int *minval = &iminval, *maxval = &imaxval;
int planeSize = (int)it.size*cn;
for( size_t i = 0; i < it.nplanes; i++, ++it, startidx += planeSize )
func( ptrs[0], ptrs[1], minval, maxval, &minidx, &maxidx, planeSize, startidx );
+ if (!src.empty() && mask.empty())
+ {
+ if( minidx == 0 )
+ minidx = 1;
+ if( maxidx == 0 )
+ maxidx = 1;
+ }
+
if( minidx == 0 )
dminval = dmaxval = 0;
else if( depth == CV_32F )
for( size_t i = 0; i < total; i++ )
{
_Tp val = src[i];
- if( minval > val )
+ if( minval > val || !minpos )
{
minval = val;
minpos = startidx + i;
}
- if( maxval < val )
+ if( maxval < val || !maxpos )
{
maxval = val;
maxpos = startidx + i;
for( size_t i = 0; i < total; i++ )
{
_Tp val = src[i];
- if( minval > val && mask[i] )
+ if( (minval > val || !minpos) && mask[i] )
{
minval = val;
minpos = startidx + i;
}
- if( maxval < val && mask[i] )
+ if( (maxval < val || !maxpos) && mask[i] )
{
maxval = val;
maxpos = startidx + i;
size_t startidx = 1, total = planes[0].total();
size_t i, nplanes = it.nplanes;
int depth = src.depth();
- double maxval = depth < CV_32F ? INT_MIN : depth == CV_32F ? -FLT_MAX : -DBL_MAX;
- double minval = depth < CV_32F ? INT_MAX : depth == CV_32F ? FLT_MAX : DBL_MAX;
+ double minval = 0;
+ double maxval = 0;
size_t maxidx = 0, minidx = 0;
for( i = 0; i < nplanes; i++, ++it, startidx += total )
}
}
- if( minidx == 0 )
- minval = maxval = 0;
-
if( _maxval )
*_maxval = maxval;
if( _minval )