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同样适用

你可能感兴趣的:(OpenCV)