参考资料:
1、http://docs.opencv.org/modules/core/doc/operations_on_arrays.html?highlight=reduce#void reduce(InputArray src, OutputArray dst, int dim, int rtype, int dtype)
Reduces a matrix to a vector.
-
C++: void reduce(InputArray src,
OutputArray dst, int dim, int rtype, int dtype=-1 )
- Python: cv2.reduce(src,
dim, rtype[, dst[, dtype]]) →
dst
-
C: void cvReduce(const
CvArr* src, CvArr* dst, int dim=-1, int op=CV_REDUCE_SUM)
- Python: cv.Reduce(src,
dst, dim=-1, op=CV_REDUCE_SUM) → None -
Parameters: - src – input 2D matrix.
- dst – output vector. Its size and type is defined by dim and dtype parameters.
- dim – dimension index along which the matrix is reduced. 0 means that the matrix is reduced
to a single row. 1 means that the matrix is reduced to a single column. - rtype –
reduction operation that could be one of the following:
- CV_REDUCE_SUM: the output is the sum of all rows/columns of the matrix.
- CV_REDUCE_AVG: the output is the mean vector of all rows/columns of the matrix.
- CV_REDUCE_MAX: the output is the maximum (column/row-wise) of all rows/columns of the matrix.
- CV_REDUCE_MIN: the output is the minimum (column/row-wise) of all rows/columns of the matrix.
- dtype – when negative, the output vector will have the same type as the input matrix, otherwise, its type will
- be CV_MAKE_TYPE(CV_MAT_DEPTH(dtype), src.channels()).
2、用法:
reduce(trainData,dst,0,CV_REDUCE_SUM);
// 是将训练矩阵按行进行累加,得到一个列向量。训练数据矩阵大小为1133*400
// 执行会出现错误
3、错误:
4、原因分析: 主要是最后一个dtype参数,不能默认,因为按行累加后,可能会超过uchar表达的范围。因此要改写
reduce(trainData,dst,0,CV_REDUCE_SUM,CV_32S); // 可以顺利通过