这个documentation在cv::Mat
上定义了一个括号运算符,它接受一个类型为cv::Rect
的矩形区域作为参数:
Mat cv::Mat::operator() (const Rect & roi) const
但是文档并没有解释运算符的语义。它复制了感兴趣的区域吗?或者它是否在创建的新Mat中引用它?
如果我改变了原来的Mat,那么新的Mat也会改变吗?
我的猜测是它复制,因为roi在大多数情况下不是连续的内存块。但文档没有明确说明,所以我只是想确保它没有拉出一些特殊的记忆技巧,最终将两个Mats结合起来。
答案 0 :(得分:2)
除非您明确复制数据,否则它是一个参考。
您可以使用一个小例子来看到这一点:
return maxNumber(a[row_min], 0, a[row_min].size() - 1)