1.单行或单列选择
//假设取A得第i行和第j列
Mat line = A.row(i);
Mat line_two = A.col(j);
//将第一行的所有元素都*2赋给第j行
A.row(j) = A.row(1)*2
2.用Range选择多行多列
/*Range 是 OpenCV 中新增的类,该类有两个关键变量 star 和 end。
Range对象可以用来表示矩阵的多个连续的行或者多个连续的列。
其表示的范围为从 start 到 end,包含 start,但不包含 end。*/
class Range {
public: ...
int start, end;
};
/*Range 类还提供了一个静态方法 all(),这个方法的作用如同 Matlab 中的“:”, 表示所有的行或者所有的列。
*/
//创建一个单位阵
Mat A = Mat::eye(10,10,cv_32S);
//提取第一到第三列(不包括3)
Mat B = A(Range::all(), Range(1,3));
//提取B的第5到第9行(不包括9)
//等价于C = A(Range(5,9), Range(1,3))
Mat C = B(Range(5,9),Range::all());
3.感兴趣区域(Region of interest)
第一种方法:构造函数
//创建宽度为320.高度为240的3通道图像
Mat img(Size(320,240),CV_8UC3);
//roi是img中Rect(10,10,100,100)区域的对象
Mat roi(img, Rect(10,10,100,100));