return max_val;
}
-class ThresholdRunner
+class ThresholdRunner : public ParallelLoopBody
{
public:
ThresholdRunner(Mat _src, Mat _dst, int _nStripes, double _thresh, double _maxval, int _thresholdType)
thresholdType = _thresholdType;
}
- void operator () ( const BlockedRange& range ) const
+ void operator () ( const Range& range ) const
{
- int row0 = std::min(cvRound(range.begin() * src.rows / nStripes), src.rows);
- int row1 = std::min(cvRound(range.end() * src.rows / nStripes), src.rows);
+ int row0 = std::min(cvRound(range.start * src.rows / nStripes), src.rows);
+ int row1 = range.end >= nStripes ? src.rows :
+ std::min(cvRound(range.end * src.rows / nStripes), src.rows);
/*if(0)
printf("Size = (%d, %d), range[%d,%d), row0 = %d, row1 = %d\n",
}
else
src.copyTo(dst);
+ return thresh;
}
- else
- {
- parallel_for(BlockedRange(0, nStripes),
- ThresholdRunner(src, dst, nStripes, (uchar)ithresh, (uchar)imaxval, type));
- }
+ thresh = ithresh;
+ maxval = imaxval;
}
else if( src.depth() == CV_16S )
{
}
else
src.copyTo(dst);
+ return thresh;
}
- else
- {
- parallel_for(BlockedRange(0, nStripes),
- ThresholdRunner(src, dst, nStripes, (short)ithresh, (short)imaxval, type));
- }
+ thresh = ithresh;
+ maxval = imaxval;
}
else if( src.depth() == CV_32F )
- {
- parallel_for(BlockedRange(0, nStripes),
- ThresholdRunner(src, dst, nStripes, (float)thresh, (float)maxval, type));
- }
+ ;
else
CV_Error( CV_StsUnsupportedFormat, "" );
-
+
+ parallel_for_(Range(0, nStripes),
+ ThresholdRunner(src, dst, nStripes, thresh, maxval, type));
return thresh;
}