mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 17:44:04 +08:00
Merge pull request #20263 from vrabaud:3.4
This commit is contained in:
commit
8e0baf257c
@ -1171,7 +1171,7 @@ double norm( InputArray _src1, InputArray _src2, int normType, InputArray _mask
|
|||||||
// special case to handle "integer" overflow in accumulator
|
// special case to handle "integer" overflow in accumulator
|
||||||
const size_t esz = src1.elemSize();
|
const size_t esz = src1.elemSize();
|
||||||
const int total = (int)it.size;
|
const int total = (int)it.size;
|
||||||
const int intSumBlockSize = normType == NORM_L1 && depth <= CV_8S ? (1 << 23) : (1 << 15);
|
const int intSumBlockSize = (normType == NORM_L1 && depth <= CV_8S ? (1 << 23) : (1 << 15))/cn;
|
||||||
const int blockSize = std::min(total, intSumBlockSize);
|
const int blockSize = std::min(total, intSumBlockSize);
|
||||||
int isum = 0;
|
int isum = 0;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
@ -2117,6 +2117,15 @@ TEST(Core_Norm, IPP_regression_NORM_L1_16UC3_small)
|
|||||||
EXPECT_EQ((double)20*cn, cv::norm(a, b, NORM_L1, mask));
|
EXPECT_EQ((double)20*cn, cv::norm(a, b, NORM_L1, mask));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(Core_Norm, NORM_L2_8UC4)
|
||||||
|
{
|
||||||
|
// Tests there is no integer overflow in norm computation for multiple channels.
|
||||||
|
const int kSide = 100;
|
||||||
|
cv::Mat4b a(kSide, kSide, cv::Scalar(255, 255, 255, 255));
|
||||||
|
cv::Mat4b b = cv::Mat4b::zeros(kSide, kSide);
|
||||||
|
const double kNorm = 2.*kSide*255.;
|
||||||
|
EXPECT_EQ(kNorm, cv::norm(a, b, NORM_L2));
|
||||||
|
}
|
||||||
|
|
||||||
TEST(Core_ConvertTo, regression_12121)
|
TEST(Core_ConvertTo, regression_12121)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user