diff --git a/modules/core/src/mathfuncs.cpp b/modules/core/src/mathfuncs.cpp index b9e09faaf..4e25eed5e 100644 --- a/modules/core/src/mathfuncs.cpp +++ b/modules/core/src/mathfuncs.cpp @@ -2051,7 +2051,7 @@ bool chackIntegerRang(cv::Mat src, Point& bad_pt, int minVal, int maxVal, double for (int j = 0; j < as_one_channel.rows; ++j) for (int i = 0; i < as_one_channel.cols; ++i) { - if (as_one_channel.at(j ,i) <= minVal || as_one_channel.at(j ,i) >= maxVal) + if (as_one_channel.at(j ,i) < minVal || as_one_channel.at(j ,i) >= maxVal) { bad_pt.y = j ; bad_pt.x = i % src.channels(); diff --git a/modules/core/test/test_math.cpp b/modules/core/test/test_math.cpp index 35afafc37..1c4293b80 100644 --- a/modules/core/test/test_math.cpp +++ b/modules/core/test/test_math.cpp @@ -2402,7 +2402,17 @@ TYPED_TEST_P(Core_CheckRange, Bounds) delete bad_pt; } -REGISTER_TYPED_TEST_CASE_P(Core_CheckRange, Negative, Positive, Bounds); +TYPED_TEST_P(Core_CheckRange, Zero) +{ + double min_bound = 0.0; + double max_bound = 0.1; + + cv::Mat src = cv::Mat::zeros(3,3, cv::DataDepth::value); + + ASSERT_TRUE( checkRange(src, true, NULL, min_bound, max_bound) ); +} + +REGISTER_TYPED_TEST_CASE_P(Core_CheckRange, Negative, Positive, Bounds, Zero); typedef ::testing::Types mat_data_types; INSTANTIATE_TYPED_TEST_CASE_P(Negative_Test, Core_CheckRange, mat_data_types);