该方法是 Mat::locateROI() 的互补性方法。这些函数的典型应用是确定父矩阵中子阵的位置,然后
以某种方式改变位置。尤其典型的是,当滤镜操作中要考虑 ROI 外的像素时就需要它。当方法的所
有参数都是正的时候,ROI 需要以指定量全方位增长,例如:
A.adjustROI(2, 2, 2,2);
在此示例中,每个方向 4 元素增加矩阵大小。矩阵向左侧和上侧分别平移 2 个元素,这会产生 5 x 5
内核的滤镜所需的所有像素。你的责任是确保 adjustROI 不超出父矩阵边界。如果超出,该函数发
出错误提示。OpenCV 的滤镜函数在内部调用该函数,像 filter2D(),形态学的操作,等等。
另请参阅:
copyMakeBorder()
Mat::operator()
提取矩形子阵。
C++: Mat Mat::operator()(Range rowRange, RangecolRange) const
C++: Mat Mat::operator()(const Rect& roi) const
C++: Mat Mat::operator()(const Ranges* ranges) const
参数:
rowRange– 提 取 的 子 阵 的 开 始 和 结 束 的 行 。 不 包 括 的 上 限 。 若 要 选 择 的 所 有 行 , 请 使 用
Range::all()。
colRange– 提 取 的 子 阵 的 开 始 和 结 束 的 列 。 不 包 括 的 上 限 。 若 要 选 择 的 所 有 列 , 请 使 用
Range::all()。
roi – 抽出子阵 specified 作为一个矩形。
ranges – 选定范围沿每个数组维度的数组。
该运算符为*this 的子数组创建新的头。他 们是 Mat::row() 、 Mat::col() 、 Mat::rowRange(),和
Mat::colRange()最普遍的形式。例如,A(Range(0, 10),Range::all()) 是相当于 A.rowRange(0, 10)。
与上述所有操作相同,该操作运算符是复杂度为 O(1)的操作,就是没有矩阵数据将被复制。
Mat::operator CvMat
创建矩阵 CvMat 头。
C++: Mat::operator CvMat() const
该运算符创建矩阵 CvMat 的头,而不复制的基础数据。引用计数未被考虑到此操作中。因此,您应
该确保 CvMat 头在使用的时候不释放原始矩阵。该运算符对于新旧 OpenCV API 混用是有用的,例
如: