目录
cv::Mat::colRange()
是 OpenCV 中的一个函数,用于在矩阵中选择指定的列范围。这对于图像或数据矩阵处理时需要选择特定列的情况非常有用。
1. 函数定义
colRange()
有两种使用方式:
cv::Mat Mat::colRange(int startcol, int endcol) const;
cv::Mat Mat::colRange(const Range &r) const;
int startcol
:起始列的索引(包含)。int endcol
:结束列的索引(不包含)。Range r
:列范围,Range(startcol, endcol)
。
返回值:返回一个新的 cv::Mat
,包含了源矩阵的指定列范围。
2. 功能
colRange()
不会复制数据,而是生成一个指向原始矩阵数据的子矩阵。这个操作是浅拷贝的,因此对子矩阵的修改会影响原始矩阵的数据。- 用于对矩阵的特定列范围进行处理,而无需创建新的数据拷贝,能节省内存和计算时间。
3. 代码示例
假设有一个图像或矩阵 mat
:
cv::Mat mat = (cv::Mat_<int>(3, 5) << 1, 2, 3, 4, 5,
6, 7, 8, 9, 10,
11, 12, 13, 14, 15);
3.1 选择第1列到第3列(列索引从0开始)
cv::Mat submat = mat.colRange(1, 4);
这将会创建一个新的矩阵 submat
,包含 mat
的第1列到第3列的数据:
[ 2, 3, 4;
7, 8, 9;
12,13,14 ]
3.2 使用 Range
参数
同样的操作也可以使用 Range
参数来完成:
cv::Mat submat = mat.colRange(cv::Range(1, 4));
4. 注意事项
- 索引范围:起始列包含在内,但结束列不包含在内。
- 浅拷贝:生成的子矩阵与原矩阵共享数据,因此对子矩阵的更改会反映在原矩阵上。
- 范围限制:索引必须在矩阵的列范围内,否则会导致错误。
5. 常见用途
- 在图像处理中提取图像的某些列以进行局部分析。
- 数据矩阵中按列选择子集以进行特定运算。
标签:Mat,矩阵,OpenCV,Range,colRange,cv,mat From: https://www.cnblogs.com/keye/p/18517121