【转】opencv 矩阵行列求和

转自:https://blog.csdn.net/lcgwust/article/details/70800177

函数: reduce();

官方文档:

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()).

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 CV_REDUCE_SUM and CV_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.

总结一句话:参数的选择要对应

double a[5][4] =
    {
        { 4, 0, 2, 5 },
        { 1, 1, 0, 7 },
        { 0, 5, 2, 0 },
        { 0, 3, 4, 0 },
        { 8, 0, 1, 2 }
    };
 
    Mat ma(5, 4, CV_64FC1, a);//如果ma为图像数据的话,须用convertTo(newImage, CV_64FC1, 1/255.0);函数转化
    Mat mb(5, 1, CV_64FC1, Scalar(0));
    Mat mc(1, 4, CV_64FC1, Scalar(0)); 
 
        cout << "原矩阵:" << endl;
    cout << ma << endl;
 
    reduce(ma, mb, 1, CV_REDUCE_SUM);
    cout << "列向量" << endl;
    cout << mb << endl;
 
    reduce(ma, mc, 0, CV_REDUCE_SUM);
    cout << "行向量" << endl;
    cout << mc << endl;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值