Merge pull request #6908 from ilya-lavrenov:reduce

This commit is contained in:
Maksim Shabunin 2016-07-15 09:07:56 +00:00
commit b0fa477614
2 changed files with 14 additions and 3 deletions

View File

@ -826,9 +826,9 @@ CV_EXPORTS void minMaxLoc(const SparseMat& a, double* minVal,
The function reduce reduces the matrix to a vector by treating the matrix rows/columns as a set of
1D vectors and performing the specified operation on the vectors until a single row/column is
obtained. For example, the function can be used to compute horizontal and vertical projections of a
raster image. In case of REDUCE_SUM and REDUCE_AVG , the output may have a larger element
bit-depth to preserve accuracy. And multi-channel arrays are also supported in these two reduction
modes.
raster image. In case of REDUCE_MAX and REDUCE_MIN , the output image should have the same type as the source one.
In case of REDUCE_SUM and REDUCE_AVG , the output may have a larger element bit-depth to preserve accuracy.
And multi-channel arrays are also supported in these two reduction modes.
@param src input 2D matrix.
@param dst output vector. Its size and type is defined by dim and dtype parameters.
@param dim dimension index along which the matrix is reduced. 0 means that the matrix is reduced to

View File

@ -1509,3 +1509,14 @@ TEST(Mat, regression_6696_BigData_8Gb)
EXPECT_EQ(4, destImageBGR.at<Vec4b>(height-1, width-1)[3]);
}
#endif
TEST(Reduce, regression_should_fail_bug_4594)
{
cv::Mat src = cv::Mat::eye(4, 4, CV_8U);
std::vector<int> dst;
EXPECT_THROW(cv::reduce(src, dst, 0, CV_REDUCE_MIN, CV_32S), cv::Exception);
EXPECT_THROW(cv::reduce(src, dst, 0, CV_REDUCE_MAX, CV_32S), cv::Exception);
EXPECT_NO_THROW(cv::reduce(src, dst, 0, CV_REDUCE_SUM, CV_32S));
EXPECT_NO_THROW(cv::reduce(src, dst, 0, CV_REDUCE_AVG, CV_32S));
}