OpenCV Mat数据的按行(列)和多行(列)赋值

赋值的不正确情况

在使用opencv的过程中,希望多行或者多列进行赋值,我之前的代码是这样的

    Mat c = Mat::zeros(3, 5, CV_32F);
    Mat a = Mat::ones(3, 6, CV_32F);
    //对a的第一列进行赋值
    a.col(0) = c.col(0);
    //将c的1-5列赋值给a
    a.colRange(1, 6) = c;

可以试一下。这时的a的值没有发生任何变化

使用copyTo函数

使用copyTo函数可以实现数据的复制,是一种克隆,而且可以实现单行(列),多行(列)的赋值;
代码如下

    Mat c = Mat::zeros(3, 5, CV_32F);
    Mat a = Mat::ones(3, 6, CV_32F);
    //对a的第一列进行赋值
    //a.col(0) = c.col(0);
    c.col(0).copyTo(a.col(0));
    //将c的1-5列赋值给a
    //a.colRange(1, 6) = c;
    c.copyTo(a.colRange(1, 6));

这样再测试一下结果。试试看。
另外,colRange(start,end),包括左边界,不包括右边界,对rowRange同样适用

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值