mirror of
https://github.com/opencv/opencv.git
synced 2025-08-06 14:36:36 +08:00
Merge pull request #11285 from take1014:core_6125
* Resolves 6125 * Fix test code * Delete unnecessary code
This commit is contained in:
parent
e7adce851c
commit
4934f7c5a4
@ -1885,13 +1885,24 @@ void cv::normalize( InputArray _src, InputOutputArray _dst, double a, double b,
|
|||||||
CV_INSTRUMENT_REGION()
|
CV_INSTRUMENT_REGION()
|
||||||
|
|
||||||
double scale = 1, shift = 0;
|
double scale = 1, shift = 0;
|
||||||
|
int type = _src.type(), depth = CV_MAT_DEPTH(type);
|
||||||
|
|
||||||
|
if( rtype < 0 )
|
||||||
|
rtype = _dst.fixedType() ? _dst.depth() : depth;
|
||||||
|
|
||||||
if( norm_type == CV_MINMAX )
|
if( norm_type == CV_MINMAX )
|
||||||
{
|
{
|
||||||
double smin = 0, smax = 0;
|
double smin = 0, smax = 0;
|
||||||
double dmin = MIN( a, b ), dmax = MAX( a, b );
|
double dmin = MIN( a, b ), dmax = MAX( a, b );
|
||||||
minMaxIdx( _src, &smin, &smax, 0, 0, _mask );
|
minMaxIdx( _src, &smin, &smax, 0, 0, _mask );
|
||||||
scale = (dmax - dmin)*(smax - smin > DBL_EPSILON ? 1./(smax - smin) : 0);
|
scale = (dmax - dmin)*(smax - smin > DBL_EPSILON ? 1./(smax - smin) : 0);
|
||||||
shift = dmin - smin*scale;
|
if( rtype == CV_32F )
|
||||||
|
{
|
||||||
|
scale = (float)scale;
|
||||||
|
shift = (float)dmin - (float)(smin*scale);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
shift = dmin - smin*scale;
|
||||||
}
|
}
|
||||||
else if( norm_type == CV_L2 || norm_type == CV_L1 || norm_type == CV_C )
|
else if( norm_type == CV_L2 || norm_type == CV_L1 || norm_type == CV_C )
|
||||||
{
|
{
|
||||||
@ -1902,10 +1913,6 @@ void cv::normalize( InputArray _src, InputOutputArray _dst, double a, double b,
|
|||||||
else
|
else
|
||||||
CV_Error( CV_StsBadArg, "Unknown/unsupported norm type" );
|
CV_Error( CV_StsBadArg, "Unknown/unsupported norm type" );
|
||||||
|
|
||||||
int type = _src.type(), depth = CV_MAT_DEPTH(type);
|
|
||||||
if( rtype < 0 )
|
|
||||||
rtype = _dst.fixedType() ? _dst.depth() : depth;
|
|
||||||
|
|
||||||
CV_OCL_RUN(_dst.isUMat(),
|
CV_OCL_RUN(_dst.isUMat(),
|
||||||
ocl_normalize(_src, _dst, _mask, rtype, scale, shift))
|
ocl_normalize(_src, _dst, _mask, rtype, scale, shift))
|
||||||
|
|
||||||
|
@ -1918,6 +1918,25 @@ TEST(Normalize, regression_5876_inplace_change_type)
|
|||||||
EXPECT_EQ(0, cvtest::norm(m, result, NORM_INF));
|
EXPECT_EQ(0, cvtest::norm(m, result, NORM_INF));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(Normalize, regression_6125)
|
||||||
|
{
|
||||||
|
float initial_values[] = {
|
||||||
|
1888, 1692, 369, 263, 199,
|
||||||
|
280, 326, 129, 143, 126,
|
||||||
|
233, 221, 130, 126, 150,
|
||||||
|
249, 575, 574, 63, 12
|
||||||
|
};
|
||||||
|
|
||||||
|
Mat src(Size(20, 1), CV_32F, initial_values);
|
||||||
|
float min = 0., max = 400.;
|
||||||
|
normalize(src, src, 0, 400, NORM_MINMAX, CV_32F);
|
||||||
|
for(int i = 0; i < 20; i++)
|
||||||
|
{
|
||||||
|
EXPECT_GE(src.at<float>(i), min) << "Value should be >= 0";
|
||||||
|
EXPECT_LE(src.at<float>(i), max) << "Value should be <= 400";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TEST(MinMaxLoc, regression_4955_nans)
|
TEST(MinMaxLoc, regression_4955_nans)
|
||||||
{
|
{
|
||||||
cv::Mat one_mat(2, 2, CV_32F, cv::Scalar(1));
|
cv::Mat one_mat(2, 2, CV_32F, cv::Scalar(1));
|
||||||
|
Loading…
Reference in New Issue
Block a user