added note about cv::reduce output type for MIN/MAX

pull/6908/head
Ilya Lavrenov 8 years ago
parent 9bda0546f8
commit 0af3947468
  1. 6
      modules/core/include/opencv2/core.hpp
  2. 11
      modules/core/test/test_mat.cpp

@ -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 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 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 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 raster image. In case of REDUCE_MAX and REDUCE_MIN , the output image should have the same type as the source one.
bit-depth to preserve accuracy. And multi-channel arrays are also supported in these two reduction In case of REDUCE_SUM and REDUCE_AVG , the output may have a larger element bit-depth to preserve accuracy.
modes. And multi-channel arrays are also supported in these two reduction modes.
@param src input 2D matrix. @param src input 2D matrix.
@param dst output vector. Its size and type is defined by dim and dtype parameters. @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 @param dim dimension index along which the matrix is reduced. 0 means that the matrix is reduced to

@ -1509,3 +1509,14 @@ TEST(Mat, regression_6696_BigData_8Gb)
EXPECT_EQ(4, destImageBGR.at<Vec4b>(height-1, width-1)[3]); EXPECT_EQ(4, destImageBGR.at<Vec4b>(height-1, width-1)[3]);
} }
#endif #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));
}

Loading…
Cancel
Save