cv :: Mat括号运算符是否复制或引用了感兴趣的区域?

时间:2016-08-18 23:08:18

标签: opencv mat

这个documentationcv::Mat上定义了一个括号运算符,它接受一个类型为cv::Rect的矩形区域作为参数:

Mat cv::Mat::operator() (const Rect & roi) const

但是文档并没有解释运算符的语义。它复制了感兴趣的区域吗?或者它是否在创建的新Mat中引用它?

如果我改变了原来的Mat,那么新的Mat也会改变吗?

我的猜测是它复制,因为roi在大多数情况下不是连续的内存块。但文档没有明确说明,所以我只是想确保它没有拉出一些特殊的记忆技巧,最终将两个Mats结合起来。

1 个答案:

答案 0 :(得分:2)

除非您明确复制数据,否则它是一个参考。

您可以使用一个小例子来看到这一点:

return maxNumber(a[row_min], 0, a[row_min].size() - 1)