Skip to content

Commit d9e0923

Browse files
committed
test: regression test for IPP minMaxIdx problem
1 parent 9313978 commit d9e0923

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

modules/core/test/test_arithm.cpp

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1932,3 +1932,77 @@ TEST(Compare, regression_8999)
19321932
compare(A, B, C, CMP_LT);
19331933
});
19341934
}
1935+
1936+
1937+
TEST(Core_minMaxIdx, regression_9207_1)
1938+
{
1939+
const int rows = 4;
1940+
const int cols = 3;
1941+
uchar mask_[rows*cols] = {
1942+
255, 255, 255,
1943+
255, 0, 255,
1944+
0, 255, 255,
1945+
0, 0, 255
1946+
};
1947+
uchar src_[rows*cols] = {
1948+
1, 1, 1,
1949+
1, 1, 1,
1950+
2, 1, 1,
1951+
2, 2, 1
1952+
};
1953+
Mat mask(Size(cols, rows), CV_8UC1, mask_);
1954+
Mat src(Size(cols, rows), CV_8UC1, src_);
1955+
double minVal = -0.0, maxVal = -0.0;
1956+
int minIdx[2] = { -2, -2 }, maxIdx[2] = { -2, -2 };
1957+
minMaxIdx(src, &minVal, &maxVal, minIdx, maxIdx, mask);
1958+
EXPECT_EQ(0, minIdx[0]);
1959+
EXPECT_EQ(0, minIdx[1]);
1960+
EXPECT_EQ(0, maxIdx[0]);
1961+
EXPECT_EQ(0, maxIdx[1]);
1962+
}
1963+
1964+
1965+
TEST(Core_minMaxIdx, regression_9207_2)
1966+
{
1967+
const int rows = 13;
1968+
const int cols = 15;
1969+
uchar mask_[rows*cols] = {
1970+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255,
1971+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255,
1972+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255,
1973+
0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255,
1974+
255, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255,
1975+
255, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 255, 255,
1976+
255, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 255, 255, 255, 0,
1977+
255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 0,
1978+
255, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 0,
1979+
255, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 255, 0,
1980+
255, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1981+
0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1982+
0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1983+
};
1984+
uchar src_[15*13] = {
1985+
5, 5, 5, 5, 5, 6, 5, 2, 0, 4, 6, 6, 4, 1, 0,
1986+
6, 5, 4, 4, 5, 6, 6, 5, 2, 0, 4, 6, 5, 2, 0,
1987+
3, 2, 1, 1, 2, 4, 6, 6, 4, 2, 3, 4, 4, 2, 0,
1988+
1, 0, 0, 0, 0, 1, 4, 5, 4, 4, 4, 4, 3, 2, 0,
1989+
0, 0, 0, 0, 0, 0, 2, 3, 4, 4, 4, 3, 2, 1, 0,
1990+
0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 3, 2, 1, 0, 0,
1991+
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1,
1992+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1993+
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1,
1994+
0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 3, 3, 1, 0, 1,
1995+
0, 0, 0, 0, 0, 0, 1, 4, 5, 6, 5, 4, 3, 2, 0,
1996+
1, 0, 0, 0, 0, 0, 3, 5, 5, 4, 3, 4, 4, 3, 0,
1997+
2, 0, 0, 0, 0, 2, 5, 6, 5, 2, 2, 5, 4, 3, 0
1998+
};
1999+
Mat mask(Size(cols, rows), CV_8UC1, mask_);
2000+
Mat src(Size(cols, rows), CV_8UC1, src_);
2001+
double minVal = -0.0, maxVal = -0.0;
2002+
int minIdx[2] = { -2, -2 }, maxIdx[2] = { -2, -2 };
2003+
minMaxIdx(src, &minVal, &maxVal, minIdx, maxIdx, mask);
2004+
EXPECT_EQ(0, minIdx[0]);
2005+
EXPECT_EQ(14, minIdx[1]);
2006+
EXPECT_EQ(0, maxIdx[0]);
2007+
EXPECT_EQ(14, maxIdx[1]);
2008+
}

0 commit comments

Comments
 (0)