Mat取行或列
首先opencv Mat中如何取出某一行或某几行,某一列或某几列呢?
Mat dataCol;
dataCol = FeatureValue.colRange(j,j+1).clone();
直接使用Mat类中成员函数,方法,colRange对应的是列,rowRange对应的是行,从第j列(下标从0开始)到第j列,也就是说只取出第j列而已。后面的clone表示深拷贝,不使用clone表示浅拷贝。
深拷贝与浅拷贝
浅拷贝的说明如下:
Mat B;
B = image // 第一种方式
Mat C(image); // 第二种方式
这两种方式称为浅copy,是由于它们有不同的矩阵头,但是它们共享内存空间,即指向一个矩阵。当图像矩阵发生变化时,两者相关联,都会变化。
深拷贝的说明如下:
Mat B,C;
B = image.clone(); // 第一种方式
image.copyTo(C); // 第二种方式
深拷贝是真正的copy了一个新的图像矩阵,此时image,B,C三者相互没有影响。
如果是取出某一行或一列,可以用row和col。