赋值的不正确情况
在使用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同样适用