参考资料:
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); // 可以顺利通过